javascript - 从与已定义变量匹配的对象数组中的对象获取值

标签 javascript arrays javascript-objects

假设我有这个对象数组。

 const movieTitles = [
    {
      movieId: "4820",
      movieName: "The Planet Of The Apes",
    },
    {
      movieId: "0489",
      movieName: "Interstellar",
    },
    {
      movieId: "6238",
      movieName: "The Dark Knight",
    },
  ];

还有一个外部变量(与星际穿越电影中的对象相匹配) const matchId = "0489";

我的问题是:

  1. 如何检查数组中包含 matchId 变量的正确对象?

  2. 一旦确认 ID 相同,我如何获取该对象并使用它的属性(例如 movieName)?

  3. 如果变量动态更改,我如何根据对象数组检查变量的内容以检查它是否匹配?

感谢您提前提供的帮助!

最佳答案

如果每个 movieId 都是唯一的,那么您应该使用对象,而不是数组。像这样的东西更好:

const movieTitles = {
  "4820": {
    movieName: "The Planet Of The Apes",
  },
  "0489": {
    movieName: "Interstellar",
  },
  "6238": {
    movieName: "The Dark Knight",
  },
};

注意:如果您无法更改格式movieTitles,那么您可以从原始数组创建一个新对象,如下所示:

const movieTitles = [{
    movieId: "4820",
    movieName: "The Planet Of The Apes",
  },
  {
    movieId: "0489",
    movieName: "Interstellar",
  },
  {
    movieId: "6238",
    movieName: "The Dark Knight",
  },
];

const movieObject = {};
for (const movie of movieTitles) {
  const id = movie.movieId;
  delete movie.movieId;
  movieObject[id] = movie;
}

console.log(movieObject);

无论采用哪种方式,您都可以轻松选择您需要的电影 使用语法movies[movieId]。像这样:

const movies = {
  "4820": {
    movieName: "The Planet Of The Apes",
  },
  "0489": {
    movieName: "Interstellar",
  },
  "6238": {
    movieName: "The Dark Knight",
  },
};

// You can use a static value, like this:
console.log(movies["0489"])

// Or a variable like this:
const movieId = "4820"; // change this to any movie ID
console.log(movies[movieId])

这比循环数组要快得多,而且更惯用。使用对象的时间复杂度是一次性转换 O(n),之后每次访问的时间复杂度为 O(1)。相比之下,每次使用 .filter() 的复杂度都是 O(n)。

关于javascript - 从与已定义变量匹配的对象数组中的对象获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74215580/

相关文章:

javascript - Promise.all 内含 Promise 链

JavaScript:将 Json 数据数组更改为新格式

arrays - 行专业到列专业的转换公式?

javascript - 使用 Object.values(map) 时,类型 'values' Typescript 上不存在属性 'ObjectConstructor'

javascript - B 扩展了 A,但是 B.add 填充了 A.prototype.property

javascript - 合并 Javascript 对象

javascript - 在 TinyMce 中的光标位置添加文本,点击图标

javascript - Vuejs 在多个组件之间移动数据

javascript - 如何在设置 header 后将字符串返回给客户端

JavaScript:根据条件创建二维对象数组