猿问

使用散列和过滤器散列遍历数组

我有一个里面有哈希的数组:


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"推送到变量以便我得到:


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"}


Smart猫小萌
浏览 97回答 2
2回答

九州编程

Array.filter 方法应该可以解决问题。var filtered_array = a.filter(function(e){&nbsp; &nbsp; return (e.type === 'type1')})

猛跑小猪

你很接近,你只是把错误的东西推到结果上。您可以直接推送a[i]而不是创建一个新对象。您也不需要嵌套循环。这是为对象中的每个属性重复推送。for (var i = 0; i < a.length; i++) {&nbsp; &nbsp; if (a[i].type == "type1"){&nbsp; &nbsp; &nbsp; &nbsp; variable.push(a[i])&nbsp; &nbsp; }}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答