将数组转换为另一个数组过滤器Jquery

时间:2014-09-29 21:04:18

标签: jquery

我有这个数组

var setData =
[{"id":"1","name":"1","position":"1","office":"NY","active":"1"},
{"id":"2","name":"2","position":"2","office":"NY","active":"0"},
{"id":"3","name":"3","position":"3","office":"NY","active":"0"}
]; 

我需要的是使用活动字段1来获取这个新数组

var activeData =
[{"id":"1","name":"1","position":"1","office":"NY","active":"1"}
]; 

3 个答案:

答案 0 :(得分:3)

您几乎似乎知道答案:使用Array#filter

var filteredArray = setData.filter(function(entry) {
    return entry.active === "1";
});

它是ES5的东西,但可以为旧版浏览器填充。 filter从每个元素构造一个新数组,过滤函数将为其返回一个真值。

答案 1 :(得分:2)

使用javascript的过滤功能。

var activeData = setData.filter(function (element) {
    return element.active === "1";
});

filter函数接收一个函数,该函数接受数组的元素并使用函数返回true的元素创建一个新数组(谓词成立)。

请参阅 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

编辑:

还有一些评论。

吨。 J.在这里带来了“真理”这个词。这意味着在javascript中,不仅可以在逻辑语句中使用true和false。 truthy值是每个值,当放入if else语句时,程序流经“then”分支,而falsy值则相反。 e.g。

if ({}) alert("Truthy"); else alsert("Falsy"); //Truthy
if ([]) alert("Truthy"); else alsert("Falsy"); //Truthy
if (1) alert("Truthy"); else alsert("Falsy"); //Truthy
if (true) alert("Truthy"); else alsert("Falsy"); //Truthy

if ("") alert("Truthy"); else alsert("Falsy"); //Falsy
if (0) alert("Truthy"); else alsert("Falsy"); //Falsy
if (false) alert("Truthy"); else alsert("Falsy"); //Falsy

答案 2 :(得分:1)

您可以使用:

jQuery .each()

var activeData = [];

$.each(setData,function(i,v){
  if(v.active=="1") activeData.push(v);
});