如何在 javascript 过滤器函数中访问键值对中的数组



我想弄清楚数字 2 在变量"arr"中出现多少次/计数,答案应该是 2。 如何访问名为"数字"的键中的数字数组?

let arr = [{numbers:[2,2,3]}]
//how many times does the number 2 appear in the array above
let newArray = arr.filter(function(e){
return e.numbers[0] == 2
})
document.write("Occurence of two:" + newArray.length + "<br>") 

谢谢,尝试解决方案 https://codepen.io/shihanrehman/pen/JybVJG

你的语法是错误的。您应该获取内部数组并对其进行过滤。

let arr = [{numbers:[2,2,3]}]
//how many times does the number 2 appear in the array above
let newArray = arr[0].numbers.filter(function(e){
return e== 2
})
document.write("Occurence of two:" + newArray.length + "<br>")

您需要遍历数字数组,而不仅仅是外部数组。

let arr = [{numbers:[2,2,3]}]
//how many times does the number 2 appear in the array above
let newArray = arr.map((object) => {
return object.numbers.filter(element => element === 2);
});
document.write("Occurence of two: " + newArray[0].length + "<br>")

请使用这个

newArray = arr[0].numbers.filter(function(e){
return e == 2
})

在您的情况下,reduce应该是一个更好的解决方案。但是,如果您坚持使用过滤器,请使用以下代码片段:

let arr = [{numbers:[2,2,3]}];
//how many times does the number 2 appear in the array above
let count = arr.reduce((sum, value) => sum + value.numbers.filter(v => v === 2).length, 0);
document.write("Occurence of two:" + count + "<br>");

最新更新