我是lodash的初学者,我来自c#,有时我使用LINQ,我了解到lodash可用于查询linq样式,但是尽管我做了尝试,但仍无法从数组中获取项目的索引具有在lodash中等于true的布尔属性的对象。 谁能帮我吗?
我的第一次尝试:
var indexofItemns =_.find( arrayOfItems, (item) =>
(item.booleanProperty === true));
但是,我有一个数组,我可以做:
var indexItems: number[] = [];
indexItems= _.times(
arrayOfItems.length,
_.find( arrayOfItems, (item) => (item.booleanProperty === true));
第二行也不编译。
谢谢
答案 0 :(得分:2)
使用纯JS可以实现相同的目标。 你不需要lodash
const data = [{
booleanProperty: false
},
{
booleanProperty: true
},
{
booleanProperty: false
},
{
booleanProperty: true
},
{
booleanProperty: false
}
];
const indexItems = data.map((item, index) => item.booleanProperty === true ? index : null).filter((item) => item !== null);
console.log(indexItems)
答案 1 :(得分:1)
如果您需要一个满足该条件的索引,则可以使用findIndex
或es6
中的lodash
data.findIndex(a=>a.booleanProperty)
如果需要满足条件的所有索引,则可以map
和filter
顺序地一起使用(如ben's answer所示),也可以将它们合并为一个{{1 }仅迭代一次并构建索引数组。我们开始:
reduce
data.reduce((r, a, i)=> (a.booleanProperty && r.push(i), r), [])