有人可以从这个代码示例中返回对象数组值吗?
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