代码之家  ›  专栏  ›  技术社区  ›  Success Man

如何在数组javascript中添加id为的新键?

  •  0
  • Success Man  · 技术社区  · 6 年前

    我试着这样:

    <script type="text/javascript">
        var club = [
            {id:123, name:'chelsea'},
            {id:456, name:'mu'},
            {id:789, name:'liverpool'}
        ];
    
        var newClub = club.map(function(element){
           element.original = true;
           element.kw = false;
           return element;
        });
    
        console.log(newClub);
    </script>
    

    var club = [
        {id:123, name:'chelsea', original123:true, kw123:false},
        {id:456, name:'mu', original456:true, kw456:false},
        {id:789, name:'liverpool', original789:true, kw789:false}
    ];
    

    我该怎么做?

    4 回复  |  直到 6 年前
        1
  •  4
  •   Nikhil Aggarwal    6 年前

    为了 动态特性 ,需要使用括号表示法。供参考, Property accessors

    var club = [{id: 123,name: 'chelsea'},{id: 456,name: 'mu'},{id: 789,name: 'liverpool'}];
    
    var newClub = club.map(function(element) {
      element['original' + element.id] = true;
      element['kw' + element.id] = false;
      return element;
    });
    
    console.log(newClub);

    您还可以像下面这样简化代码

    var club = [{id: 123,name: 'chelsea'},{id: 456,name: 'mu'},{id: 789,name: 'liverpool'}];
    
    let newClub = club.map(o => ({...o, [`original${o.id}`] : true, [`kw${o.id}`] : false}));
    console.log(newClub);
        2
  •  5
  •   Danil Speransky    6 年前

    应使用动态属性:

    var newClub = club.map(function(element) {
      element['original' + element.id] = true;
      element['kw' + element.id] = false;
      return element;
    });
    
        3
  •  0
  •   Nenad Vracar    6 年前

    您可以使用模板文本来创建动态属性名称。

    var club = [
      {id:123, name:'chelsea'},
      {id:456, name:'mu'},
      {id:789, name:'liverpool'}
    ];
    
    var result = club.map(({id,...rest}) => ({
      ...rest,
      [`original${id}`]: true,
      [`kw${id}`]: false
    }))
    
    console.log(result)
        4
  •  0
  •   Mohammad Usman    6 年前

    你可以用 .map() Object.assign() 方法:

    var data = [
        {id:123, name:'chelsea'},
        {id:456, name:'mu'},
        {id:789, name:'liverpool'}
    ];
    
    var result = data.map(o => Object.assign({}, o, {
        ['original' + o.id]: true,
        ['kw' + o.id]: false
    }));
    
    console.log(result);
    .as-console-wrapper { max-height: 100% !important; top: 0; }