提琴:https://jsfiddle.net/3aq286rx/4/
我有一个包含嵌套数组和对象的数组
我想标记#f00
是red
等颜色,等等。
我有一个随机数生成器函数,该函数生成从0到2的随机数:getRandNUM(1)
假设数字为2,我希望能够从数组中提取#0f0
而不必使用.green
,因为我不知道基于随机数的标签。
我该怎么做
脚本:
var defaults = {
backgroundcolor: '#000',
color: '#fff',
weekdays: ['sun','mon','tue','wed','thu','fri','sat'],
colors: [
{
red: [
"#f00"
]
},
{
blue: [
"#00f"
]
},
{
green: [
"#0f0"
]
}
]
};
alert(defaults.colors[0].red);
答案 0 :(得分:1)
将colors
做成一个数组,而不是colors
是一个对象数组,其中唯一的键是颜色的名称,而值是一个带有单个十六进制代码字符串的数组。对象,每个对象都有一个color
和name
。然后,您可以生成您的随机数,并使用它来选择颜色的对象。然后,您可以使用.color
或.name
来获得所需的值。
var defaults = {
backgroundcolor: '#000',
color: '#fff',
weekdays: ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'],
colors: [{
color: "#f00",
name: "red"
},
{
color: "#00f",
name: "blue"
},
{
color: "#0f0",
name: "green"
}
]
};
// however you generate your random number
var randomNumber = 2;
alert(defaults.colors[randomNumber].color);
答案 1 :(得分:1)
var index = 2;
Object.values(defaults.colors[index])[0][0]
答案 2 :(得分:1)
构造对象的方式如下(https://jsfiddle.net/3aq286rx/14/):
var defaults = {
backgroundcolor: '#000',
color: '#fff',
weekdays: ['sun','mon','tue','wed','thu','fri','sat'],
colors:
{
red: "#f00",
blue: "#00f",
green: "#0f0"
}
};
然后使用Object.keys:
alert(defaults.colors.red);
alert(defaults.colors[Object.keys(defaults.colors)[0]]);
其中[0]是您的随机数