筛选JavaScript数组

Filtering a JavaScript array

本文关键字:数组 JavaScript 筛选      更新时间:2024-04-28

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

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

有人能推荐一种最简单的方法来过滤它吗?使用纯JavaScript或jQuery来避免使用上面显示的if语句?

var filteredColumns = columns.filter(function(column) {
    return column.parentId == listItem;
});
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;
});

使用ES5阵列的过滤方法:

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);

不要使用for…in来迭代数组。