a=[
{x:1,y:1,i:"Piechart1"},
{x:2,y:1,i:"Piechart2"},
{x:3,y:1,i:"Piechart3"}
]
str=["Piechart1","Piechart3"];
我希望通过比较数组字符串得到索引。上面例子中的输出应该是[0,2] 你能否告诉我如何在lodash,javascript中实现
答案 0 :(得分:0)
将str中的每个值映射到它们的索引中。
str.map((str) => a.findIndex((ele) => str === ele.i))
答案 1 :(得分:0)
您可以使用reduce()
方法和includes()
来检查元素是否存在于另一个数组中。
const a = [{"x":1,"y":1,"i":"Piechart1"},{"x":2,"y":1,"i":"Piechart2"},{"x":3,"y":1,"i":"Piechart3"}]
const str = ["Piechart1", "Piechart3"];
const result = a.reduce((r, {i}, ind) => {
return str.includes(i) && r.push(ind), r
}, [])
console.log(result)

答案 2 :(得分:0)
使用.map()
将字符串映射到其索引,并使用.findIndex
回调中的.map()
来定位对象的索引。
var a = [{x:1,y:1,i:"Piechart1"},{x:2,y:1,i:"Piechart2"},{x:3,y:1,i:"Piechart3"}];
var str = ["Piechart1","Piechart3"];
var res = str.map(s => a.findIndex(o => o.i == s));
console.log(res);

如果其中一个字符串不在主数组中,您可以在最后链接.filter(idx => idx != -1)
。