如何从带有对象的嵌套数组中获取值

时间:2018-09-06 18:26:38

标签: javascript

提琴:https://jsfiddle.net/3aq286rx/4/

我有一个包含嵌套数组和对象的数组

我想标记#f00red等颜色,等等。

我有一个随机数生成器函数,该函数生成从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);

3 个答案:

答案 0 :(得分:1)

colors做成一个数组,而不是colors是一个对象数组,其中唯一的键是颜色的名称,而值是一个带有单个十六进制代码字符串的数组。对象,每个对象都有一个colorname。然后,您可以生成您的随机数,并使用它来选择颜色的对象。然后,您可以使用.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]是您的随机数