gpt4 book ai didi

Javascript 过滤并获取多个索引

转载 作者:行者123 更新时间:2023-12-02 15:37:35 25 4
gpt4 key购买 nike

javascript中有没有一种方法可以过滤并获取所有找到的项目的索引。示例:

filter([{a: 5},{a,9},{a:1},{a:2}], el => el.a<3)  ===>>>  [2,3]

我感觉下划线应该有这个实用程序,但我似乎找不到它。

最佳答案

无需使用Underscore.js,只需在纯JavaScript中映射索引和过滤器即可。我在下面编写了一个函数来处理映射过滤器逻辑。只需添加您自己的过滤器即可。

function findFilteredIndicies(arr, filterFn) {
return arr.map(function(item, index) {
return filterFn.apply(null, arguments) ? index : -1;
}).filter(function(index) {
return index > -1;
});
}

var items = [{ a: 5 }, { a: 9 }, { a: 1 }, { a: 2 }];


var indicies = findFilteredIndicies(items, function(item) {
return item.a < 3;
});


document.body.innerHTML = indicies;

<小时/>

另一种方式...

您还可以使用Array.prototype.reduce,这会更简洁,因为它本质上结合了map-filter。

调试表单

function findFilteredIndicies(arr, filterFn) {
return arr.reduce(function(result, item, index) {
if (filterFn.apply(null, [].slice.call(arguments, 1))) {
result.push(index);
}
return result;
}, []);
}

最小形式

function findFilteredIndicies(a, f) {
return a.reduce(function(r, e, i) {
return f.apply(null, [].slice.call(arguments, 1)) ? r.concat(i) : r;
}, []);
}

缩小表单

findFilteredIndicies=function(a,f){return a.reduce(function(r,e,i){return f.apply(null,[].slice.call(arguments,1))?r.concat(i):r;},[]);}

关于Javascript 过滤并获取多个索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32822563/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com