Как я могу добавить новый ключ с идентификатором в массиве JavaScript? - PullRequest
0 голосов
/ 29 сентября 2018

Я пытаюсь так:

<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>

Работает.Но я хочу, чтобы ключ оригинал и kw с идентификатором, как это:

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 ]

0 голосов
/ 29 сентября 2018

Вы можете использовать .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; }
0 голосов
/ 29 сентября 2018

Вы должны использовать динамические свойства:

var newClub = club.map(function(element) {
  element['original' + element.id] = true;
  element['kw' + element.id] = false;
  return element;
});
0 голосов
/ 29 сентября 2018

Вы можете использовать литералы шаблона для создания динамических имен свойств.

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)
0 голосов
/ 29 сентября 2018

Для динамических свойств необходимо использовать скобочные обозначения.Для справки: Объект доступа .Попробуйте следующий

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...