【问题标题】:javascript - pushing new property to objects that are in an arrayjavascript - 将新属性推送到数组中的对象
【发布时间】:2018-12-25 14:41:39
【问题描述】:

我有一个数组 person 包含许多看起来像这样的对象:

const person = [
{ first: 'firstName', last: 'lastName', year: 1439, passed: 1495 },
 ...
]

我数过这个人活了多少年:

const oldest = person.map(x => x.passed - x.year);

得到每个人的新数组。

现在我想将这个计算出的年份作为一个新的属性年龄推送到这个数组中的每个人对象。

你能帮帮我吗?

【问题讨论】:

    标签: javascript arrays object


    【解决方案1】:

    您可以添加一个新属性

    person.forEach(p => p.lifetime = p.passed - p.year);
    

    或者映射一个新的对象数组

    persons = person.map(p => ({ ...p, lifetime: p.passed - p.year });
    

    【讨论】:

      【解决方案2】:

      你可以像这样给它赋值直接设置属性

      人[0].age = 最老[0]:

      你可以这样循环。

      【讨论】:

        【解决方案3】:

        您可以使用array.forEach,它将遍历同一个数组,您可以为同一个数组创建一个新属性。

        如果你想得到一个新数组,你可以使用array.map,它会创建一个新数组。

        我希望这能解决问题。

        const person = [
        { first: 'firstName', last: 'lastName', year: 1439, passed: 1489 },
        { first: 'secondName', last: 'lastName', year: 1499, passed: 1590 },
        
        { first: 'thirdName', last: 'lastName', year: 1539, passed: 1570 },
        
        { first: 'fourthName', last: 'lastName', year: 1993, passed: 2018 },
        
        ]
        
        
        person.forEach(obj => obj["age"] = obj.passed - obj.year)
        
        
        console.log("same array with added age property", person)

        【讨论】:

          【解决方案4】:

          由于两个数组 personoldest 具有相同的长度,您可以迭代其中一个,从两个数组的相同索引处的元素构造具有 age 属性的新对象并将它们推送到结果数组.

          const person = [
            { first: 'firstName', last: 'lastName', year: 1439, passed: 1495 }
          ];
          
          const oldest = person.map(x => x.passed - x.year);
          
          const result = [];
          person.forEach(({first, last, year, passed}, i) => result.push({first, last, year, passed, age: oldest[i]}));
          
          console.log(result);

          给定一个 zip 函数(不幸的是,它还不是标准的 JavaScript),您还可以将其缩短为:

          zip(person, oldest).map(([{first last, year, passed}, age]) => ({first, last, year, passed, age}));
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-11-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多