过滤JavaScript数组

时间:2013-12-08 22:24:41

标签: javascript jquery

我正在寻找一种方法来过滤我的JavaScript Array()columns,其中parentId等于传递给方法的变量。

// Array decleration
var columns = []; // Columns
//...
for (var i1 in columns) {
  if (columns[i1].parentId == listItem) {
  //...

有人可以推荐使用普通JavaScript或jQuery过滤这个的最简单方法,以避免使用上面显示的if语句吗?

3 个答案:

答案 0 :(得分:5)

var filteredColumns = columns.filter(function(column) {
    return column.parentId == listItem;
});

答案 1 :(得分:2)

array = [1,2,3,4,5];
result = $.grep(array, function(n,i) {
   return n > 3;
});

这将返回结果大于3的已过滤元素数组。此处n是要考虑的元素,i是元素的索引。因此,根据您的要求,代码可以像这样运行:

resultArray = $.grep(columns,function(n,i) {
   return n == parentId;
});

答案 2 :(得分:1)

使用ES5 Array's filter method

var filtered = columns.filter(function (item) {
  return item.parentId === listItem
});

在上面的链接中,还有一个旧浏览器的垫片。

您也可以手动执行此操作:

var filtered = [];

for (var i = 0, item; item = columns[i++];)
  if (item.parentId === listItem) filtered.push(item);

Don't use for…in to iterate over Array