开发者问题收集

有人可以从这个代码示例中返回对象数组值吗?

2020-02-05
67

大家好^^ 我先为这个问题的简单性(以及我对 JS 的理解)道歉。有人能解释一下为什么下面的代码会返回对象数组中的键值吗?我期望 array-name[n] 返回键,而不是数组中的值。我认为 array-name[n][1] 会在此函数中生成值(此示例中的形状名称)( 即,如果输入 4 ,则会返回“正方形”)。 对于背景,这是我解决的一个 edabit 挑战。然而,这并非完全是故意的(我最初尝试使用循环执行相同的功能约半小时,但无济于事)。离题了,如果可能的话,我只是想更彻底地理解这一点。感谢您的时间。

    const polygons = {
     1 :  "circle" ,
     2 :  "semi-circle",
     3 :  "triangle",
     4 :  "square",
     5 :  "pentagon",
     6 :  "hexagon",
     7 :  "heptagon",
     8 :  "octagon",
     9 :  "nonagon",
     10 : "decagon"
};
return polygons[n];
}
1个回答

您的多边形是一个对象。它不是一个数组,因此您会看到此行为。请参阅下面的代码以获得更好的解释。

// This is object. Doing polygons[4] will give you square
const polygons = {
  1 :  "circle" ,
  2 :  "semi-circle",
  3 :  "triangle",
  4 :  "square",
  5 :  "pentagon",
  6 :  "hexagon",
  7 :  "heptagon",
  8 :  "octagon",
  9 :  "nonagon",
  10 : "decagon"
};

function getFromObject(n) {
  return polygons[n];
}

// This is array. Doing polygons[4] will give you pentagon (because array index start from 0)
const polygons = [
  "circle" ,
  "semi-circle",
  "triangle",
  "square",
  "pentagon",
  "hexagon",
  "heptagon",
  "octagon",
  "nonagon",
  "decagon"
];

function getFromArray(n) {
  return polygons[n];
}

如果您需要对象中的键,您可以执行 Object.keys(polygons) 。这会返回键数组。我不确定您的用例是什么,但这就是它的工作原理。

Ashish Modi
2020-02-05