首页 > 解决方案 > JavaScript 从数组内的对象中获取一个属性

问题描述

我有一组具有以下属性的电影对象:movieName、grade 和 position。例如,这些对象看起来像:

var movies = [ { movieName: "bee movie", grade: 3, position 1},
               { movieName: "Shrek", grade: 5, position: 2} ];

我想获取一个对象的 movieName 属性。为了确定我想要movieName的电影数组中的哪个对象,我创建了一个名为arrayPosition的变量,它是一个介于0和数组长度之间的随机数 - 1:

arrayPosition = Math.floor(Math.random() * movies.length );

例如:

var movies = [{
    movieName: "Incredibles",
    grade: 4,
    position: 1
  },
  {
    movieName: "Bolt",
    grade: 5,
    position: 2
  }
];

const arrayPosition = Math.floor(Math.random() * movies.length);

console.log(movies[arrayPosition].movieName);

在这种情况下,我希望它根据 arrayPosition 是 0 还是 1 来控制“Incredibles”或“Bolt”,但它只控制未定义的控制台。

我已经看到了类似问题的解决方案,但在这些情况下,对象在数组中的位置不是一个变量,而是一个确定的数字。由于某种原因,这种差异使其不起作用。如何从数组中的对象中仅获取 movieName 属性?

标签: javascriptarrays

解决方案


您的示例代码可以正常工作。

var movies = [
  { movieName: "bee movie", grade: 3, position: 1},
  { movieName: "Shrek", grade: 5, position: 2},
  { movieName: "Incredibles", grade: 4, position: 1}, 
  { movieName: "Bolt", grade: 5, position: 2}
];

var arrayPosition = Math.floor(Math.random() * movies.length)
console.log(movies[arrayPosition].movieName)

如果你知道你一直想要console.log数组中第二部电影的标题,你可以这样做:

var movies = [
  { movieName: "bee movie", grade: 3, position: 1},
  { movieName: "Shrek", grade: 5, position: 2},
  { movieName: "Incredibles", grade: 4, position: 1}, 
  { movieName: "Bolt", grade: 5, position: 2}
];

var arrayPosition = 1

console.log(movies[arrayPosition].movieName)

请记住:

JavaScript 数组是零索引的:数组的第一个元素位于索引 0 处,最后一个元素位于等于数组长度属性值减 1 的索引处。

使用无效的索引号返回未定义。


推荐阅读