Использовать массив в качестве аргумента в функции - PullRequest
0 голосов
/ 23 июня 2018

Я немного новичок в программировании, и у меня есть эта функция:

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 голосов
/ 23 июня 2018

Да, val должен быть массивом, потому что forEach() является методом массива.

Метод forEach () вызывает предоставленную функцию один раз для каждого элемента в массиве, по порядку.

Нет, push() не означает, что весь массив будет помещен в result, а только в значение в скобках ().

Метод push () добавляет новые элементы в конец массива и возвращает новую длину.

Примечание: также не забудьте использовать === вместо == в JavaScript, который был описан здесь .

0 голосов
/ 23 июня 2018

Давайте разберем это:

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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...