我对编程有点陌生,并且具有以下功能:
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
的空数组中?非常感谢!
最佳答案
让我们分解一下:json.forEach(function(val,idx,arr){
forEach
具有功能。第一个参数是要迭代的事物的值之一。第二个和第三个参数是当前索引和数组本身,如果要在遍历数组时弄乱数组,则需要它们。
在这种情况下,该函数将一次接收一次存储在json
对象中的每个事物。if(val[key] == value){
val
是一个对象。 val[key]
的意思是“从val
获得名为key
的属性”。result.push(val)
如果val
的key
属性等于我们要过滤的值,则将val
对象放入要返回的内容列表中。
我认为混淆点在于val[key]
的含义。 []
语法既用于索引数组(arr[0]
获取列表中的第一件事),又用于获取对象的属性(foo[bar]
获取foo.bar
)
关于javascript - 在函数中使用数组作为参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51004736/