Javascript 使用哈希和过滤器哈希迭代数组

Javascript 使用哈希和过滤器哈希迭代数组,javascript,loops,Javascript,Loops,我有一个包含散列的数组: var variable = []; var a = [ { "type": "type1", "a": "a" }, { "type": "type2", "a": "b"}, { "type": "type1", "a": "

我有一个包含散列的数组:

var variable = [];
var a = [
  { "type": "type1", "a": "a" }, 
  { "type": "type2", "a": "b"}, 
  { "type": "type1", "a": "c"},
  { "type": "type1", "a": "d"},
  { "type": "type2", "a": "e"},
]
我如何能够迭代数组和散列,并根据type key的值type1对它们进行过滤,然后将其推送到一个变量,从而得到:

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]
          })
        }
    }
}

Array.filter方法应该可以做到这一点

var filtered_array = a.filter(function(e){
    return (e.type === 'type1')
})

你很接近,你只是把错误的东西推到了结果上。你只需要推一个[i],而不是制作一个新的对象

您也不需要嵌套循环。这是对对象中的每个属性重复推送

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

看看javascript中的Array.filter,在javascript中它们被称为对象,而不是散列。
for (var i = 0; i < a.length; i++) {
    if (a[i].type == "type1"){
        variable.push(a[i])
    }
}