我对编程有点陌生,并且具有以下功能:
function filterJSON(json, key, value) {
var result = [];
json.forEach(function(val,idx,arr){
if(val[key] == value){
result.push(val)
}
})
我的问题是对第二部分的理解:
json.forEach(function(val,idx,arr){
if(val[key] == value){
result.push(val)
}
})
在这种情况下,我们以val
作为参数,在if语句中,我们使用术语val[key]
。那么这意味着参数val
是一个数组吗?最后,我们将整个数组推入名为result
的空数组中。
非常感谢!
答案 0 :(得分:1)
让我们分解一下:
json.forEach(function(val,idx,arr){
forEach
具有功能。第一个参数是要迭代的事物的值之一。第二个和第三个参数是当前索引和数组本身,如果要在遍历数组时弄乱数组,则需要这些参数。
在这种情况下,该函数将一次接收一次存储在json
对象中的每个事物。
if(val[key] == value){
val
是一个对象。 val[key]
的意思是“从val
,获得名为key
的属性”。
result.push(val)
如果val
的{{1}}属性等于我们要过滤的值,则将key
对象放入要返回的内容列表中。
我认为混淆点在于val
的含义。 val[key]
语法既用于索引数组([]
获取列表中的第一件事),又用于获取对象的属性(arr[0]
获取foo[bar]
)
答案 1 :(得分:0)
是的,val
应该是数组,因为forEach()
是数组方法。
forEach()方法为数组中的每个元素依次调用一个提供的函数。
不,push()
并不意味着整个数组都将被推入result
中,而只是括号()
中的值被插入。
push()方法将新项目添加到数组的末尾,并返回新的长度。
注意:还记得在here中描述的JavaScript中使用===
代替==
。