我对编程有点陌生,并且具有以下功能:

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)

如果valkey属性等于我们要过滤的值,则将val对象放入要返回的内容列表中。

我认为混淆点在于val[key]的含义。 []语法既用于索引数组(arr[0]获取列表中的第一件事),又用于获取对象的属性(foo[bar]获取foo.bar

关于javascript - 在函数中使用数组作为参数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51004736/

10-09 17:41