这是我的情况
var myArray = [undefined, true, false, true];
我想获取项目的索引,该索引值为true。使用上面的数组,结果应该是
[1, 3]
因为第二项和第四项相等。如何用lodash查找匹配项的索引?
谢谢
以下是使用香草JS想到的第一种方法:
var myArray = [undefined, true, false, true];
var result = myArray.map((v,i) => v ? i : -1).filter(v => v > -1);
console.log(result);
或者,如果您不想使用箭头功能:
var result = myArray.map(function(v,i) { return v ? i : -1; })
.filter(function(v) { return v > -1; });
也就是说,首先映射原始数组以输出true元素的索引,其他元素的索引为-1,然后过滤结果以仅保留非-1的索引。
请注意,map函数(v,i) => v ? i : -1
正在测试真实元素-如果仅需要布尔值元素,请true
使用(v,i) => v===true ? i : -1
。
我想Lodash的等效项如下(编辑:感谢zerkms大大改进了语法):
var myArray = [undefined, true, false, true];
var result = _(myArray).map((v,i) => v ? i : -1).filter(v => v > -1).value();
console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.14.0/lodash.js"></script>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句