使用Object assign添加属性

时间:2017-02-22 19:15:14

标签: javascript ecmascript-6

我有以下功能:

addHrefs = (list) => {
    const listWithHrefs = list.map((item) => {
        item.href = customFunction(item.name);
        return item;
    });
    return listWithHrefs;
}

这里的问题是我正在改变list对象。我想知道如何在不改变(key, value)的情况下添加特定的list对。 Object.assign可以吗?我该怎么办?

2 个答案:

答案 0 :(得分:3)

可以使用Object.assign

  

Object.assign() 方法用于将所有可枚举的自有属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。

您可以将属性值分配给新对象并将其返回。

addHrefs = list =>
    list.map(item => Objects.assign({}, item, { href: customFunction(item.name) }));

答案 1 :(得分:1)

您可以将普通对象作为第一个参数传递给Object.assign(),在第二个参数处引用对象。对分配给Object.assign()的变量执行操作,返回变量



let list = [{
  a: 1
}, {
  a: 2
}, {
  a: 3
}];

let res = list.map(item => {
  let o = Object.assign({}, item);
  // do stuff with `o`
  o.a = o.a + 10;
  // return `o`
  return o
});

console.log(list, res);