向对象添加另一个键...值对

时间:2019-08-16 03:58:29

标签: javascript object javascript-objects key-value

我想为每个对象添加更多键...值对。有可能这样做吗?

现在我有一些看起来像这样的对象:

{"year":2014,"num":115.5}
{"year":2016,"num":0.0}
{"year":2017,"num":8.28}
{"year":2018,"num":0.0}

我有多种颜色:

 let colors = ['#42d4f4','#e6194B','#3cb44b','#911eb4'];

我现在想将这些颜色添加到我的对象中。

我想使它看起来像这样:

{"year":2014,"num":115.5, "colors": '#42d4f4'}
{"year":2016,"num":0.0, "colors": '#e6194B'}
{"year":2017,"num":8.28, "colors": '#3cb44b'}
{"year":2018,"num":0.0, "colors": '#911eb4'}

我有没有办法写很多if的方法?

2 个答案:

答案 0 :(得分:2)

您可以使用map遍历数组。使用传播语法浅复制对象,并使用索引添加colors属性。

let arr = [{
  "year": 2014,
  "num": 115.5
}, {
  "year": 2016,
  "num": 0.0
}, {
  "year": 2017,
  "num": 8.28
}, {
  "year": 2018,
  "num": 0.0
}];

let colors = ['#42d4f4', '#e6194B', '#3cb44b', '#911eb4'];

let result = arr.map((o, i) => ({ ...o, colors: colors[i] || null }));

console.log(result);


如果要更新现有变量,可以使用forEach

let arr = [{
  "year": 2014,
  "num": 115.5
}, {
  "year": 2016,
  "num": 0.0
}, {
  "year": 2017,
  "num": 8.28
}, {
  "year": 2018,
  "num": 0.0
}];

let colors = ['#42d4f4', '#e6194B', '#3cb44b', '#911eb4'];

arr.forEach((o, i) => o.colors = colors[i] || null);

console.log(arr);

答案 1 :(得分:1)

您可以映射到数组并使用新键color返回所有对象。

let data =[
  {"year":2014,"num":115.5},
  {"year":2016,"num":0.0},
  {"year":2017,"num":8.28},
  {"year":2018,"num":0.0}
];
let colors = ['#42d4f4','#e6194B','#3cb44b','#911eb4'];
let newData = colors.map((color, index) => ({...data[index], color}));
console.log(newData);

如果您不熟悉ES6语法,则与以下内容相同:

let data =[
  {"year":2014,"num":115.5},
  {"year":2016,"num":0.0},
  {"year":2017,"num":8.28},
  {"year":2018,"num":0.0}
];
let colors = ['#42d4f4', '#e6194B', '#3cb44b', '#911eb4'];
let newData = colors.map(function(colorHex, index) {
  return {
    year: data[index].year,
    num: data[index].num,
    color: colorHex
  }
})
console.log(newData) // [{"year":2014,"num":115.5, "colors": '#42d4f4'}, ...]