使用数组作为函数中的参数

时间:2018-06-23 20:21:30

标签: javascript arrays function if-statement

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

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的空数组中。

非常感谢!

2 个答案:

答案 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中使用===代替==