Итерировать по массиву с ha sh и фильтровать хеш - PullRequest
0 голосов
/ 05 августа 2020

У меня есть массив с хешами внутри:

var variable = [];
var a = [
  { "type": "type1", "a": "a" }, 
  { "type": "type2", "a": "b"}, 
  { "type": "type1", "a": "c"},
  { "type": "type1", "a": "d"},
  { "type": "type2", "a": "e"},
]

Как я могу перебирать массивы и хеши и фильтровать их на основе того, который имеет значение "type1" для "type" ключа и pu sh это переменная, поэтому я получаю:

var variable = [];
var a = [
  { "type": "type1", "a": "a" },  
  { "type": "type1", "a": "c"},
  { "type": "type1", "a": "d"},
]

Я пробовал использовать приведенный ниже код, который правильно выполняет фильтр, но результат неверен:

for (var i = 0; i < a.length; i++) {
    for (var key in a[i]) {
        if (a[i]["type"] == "type1"){
          variable.push({
            "type": a[i][key]
          })
        }
    }
}

Выход:

{type: "type1"}
{type: "a"}
{type: "type1"}
{type: "c"}
{type: "type1"}
{type: "d"}

Ответы [ 2 ]

1 голос
/ 05 августа 2020

Вы близки, вы просто толкаете не то на результат. Вы можете просто pu sh a[i] вместо создания нового объекта.

Вам также не нужен вложенный l oop. Это повторяет pu sh для каждого свойства в объекте.

for (var i = 0; i < a.length; i++) {
    if (a[i].type == "type1"){
        variable.push(a[i])
    }
}
1 голос
/ 05 августа 2020

Метод Array.filter должен помочь.

var filtered_array = a.filter(function(e){
    return (e.type === 'type1')
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...