使用字符串数组

时间:2018-02-12 19:53:50

标签: javascript lodash

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中实现

3 个答案:

答案 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)