我正在寻找一种方法来过滤我的JavaScript Array()columns
,其中parentId等于传递给方法的变量。
// Array decleration
var columns = []; // Columns
//...
for (var i1 in columns) {
if (columns[i1].parentId == listItem) {
//...
有人可以推荐使用普通JavaScript或jQuery过滤这个的最简单方法,以避免使用上面显示的if语句吗?
答案 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)
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);