使用lodash,如何获取所有匹配元素的索引数组?例如:
Animals = [{Name: 'Dog', Id: 0},
{Name: 'Cat', Id: 1},
{Name: 'Mouse', Id: 2},
{Name: 'Horse', Id: 3},
{Name: 'Pig', Id: 3}]
Run Code Online (Sandbox Code Playgroud)
然后我想用查找所有元素的索引Id == 3。
预期产量:
Indexes = [3,4];
Run Code Online (Sandbox Code Playgroud)
这是一个简短的解决方案:
Indexes = _.keys(_.pickBy(Animals, {Id: 3}))
Run Code Online (Sandbox Code Playgroud)
输出:
Indexes = ["3", "4"]
Run Code Online (Sandbox Code Playgroud)
使用pickBy挑元素,并keys得到索引。
pickBy 用于对象
_.pickBy(object, [predicate=_.identity])创建一个由对象属性谓词返回的对象组成的对象。谓词由两个参数调用:(值,键)。
但是当在数组上使用时,它返回一个类似
{
3: {Name: "Horse", Id: 3},
4: {Name: "Pig", Id: 3}
}
Run Code Online (Sandbox Code Playgroud)
_.keys在此对象上使用以获取字符串数组中的所有键
["3", "4"]
Run Code Online (Sandbox Code Playgroud)
如果要获取数字数组,请使用 _.map
_.map(_.keys(_.pickBy(Animals, {Id:3})), Number)
Run Code Online (Sandbox Code Playgroud)
你会得到
[3, 4]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4399 次 |
| 最近记录: |