通过属性查找数组对象ID

时间:2018-07-23 03:01:30

标签: javascript arrays

这可能是重复的,但我不确定。

我有以下数组:

[
  {
    id: "object1"
  },
  {
    id: "object2"
  },
  {
    id: "object3"
  }
]

诀窍是,数组是动态的,因此,此数组对象的全局ID有所不同。例如,在一种情况下,array [1]可以是ID为“ object1”的对象,在另一种情况下,可以为ID为“ object3”的对象。

如何根据id字符串查询此数组并将数组索引作为输出?

2 个答案:

答案 0 :(得分:3)

reduce放入由id索引的对象,其值是该id对象在原始数组中的索引,然后可以使用简单的对象查找: / p>

const input = [
  {
    id: "object1"
  },
  {
    id: "object2"
  },
  {
    id: "object3"
  }
];
const indexedById = input.reduce((a, { id }, i) => {
  a[id] = i;
  return a;
}, {});
console.log(indexedById.object2); // index of 1 in input

.findIndex是另一种可能性,但与对象查找相比,它的时间复杂度更差。

答案 1 :(得分:2)

数组有一个findIndex,所以您可以执行const findById = (x) => xs.findIndex(({ id }) => id === x),其中x是您的id字符串,xs是您的对象数组。