javascript - добавлять объект в начале на каждой итерации карты - PullRequest
0 голосов
/ 07 января 2020

Итак, давайте предположим, что у меня есть это:

var officers = [
  { id: 20, name: 'Captain', lastName: 'Piett' },
  { id: 24, name: 'General', lastName: 'Veers'  },
  { id: 56, name: 'Admiral', lastName: 'Ozzel'  },
  { id: 88, name: 'Commander', lastName: 'Jerjerrod'  }
];

Если я сделаю это: var officersIds = officers.map(x => [x.name, x.lastName]); результат officersIds будет таким:

[ "Captain", "Piett" ], [ "General", "Veers" ], [ "Admiral", "Ozzel" ], [ "Commander", "Jerjerrod" ]

верно?

Итак, что мне нужно сделать, это поместить объект на каждую итерацию карты, чтобы получить следующий вывод, например:

[["x", "y"], [ "Captain", "Piett" ]], 
[["x", "y"], [ "General", "Veers" ]],  
[["x", "y"], [ "Admiral", "Ozzel" ]], 
[["x", "y"], [ "Commander", "Jerjerrod" ]]

Зачем мне это нужно? Лучше не спрашивайте;) Но это сложная проблема, и если вы поможете мне решить эту простую проблему, я смогу перенести ваше решение в мою сложную проблему.

ВАЖНО: есть ли способ сделать это в одна строка?

Ответы [ 4 ]

0 голосов
/ 07 января 2020

Вы можете просто добавить нужные части в функцию отображения.

var officers = [{ id: 20, name: 'Captain', lastName: 'Piett' }, { id: 24, name: 'General', lastName: 'Veers'  }, { id: 56, name: 'Admiral', lastName: 'Ozzel'  }, { id: 88, name: 'Commander', lastName: 'Jerjerrod'  }],
    officersIds = officers.map(x => [["x", "y"], [x.name, x.lastName]]);

console.log(officersIds);
0 голосов
/ 07 января 2020

Использовать карту более officers.

var officers = [
  { id: 20, name: 'Captain', lastName: 'Piett' },
  { id: 24, name: 'General', lastName: 'Veers'  },
  { id: 56, name: 'Admiral', lastName: 'Ozzel'  },
  { id: 88, name: 'Commander', lastName: 'Jerjerrod'  }
];

var officersIds = officers.map(x => [["x", "y"], [x.name, x.lastName]]);
   
console.log(officersIds);
0 голосов
/ 07 января 2020

Если вы просто хотите добавить ['x', 'y'] в начало массива, вы можете использовать оператор распространения *1003*, чтобы сделать его однострочным:

var officersIds = [['x', 'y'], ...officers.map(x => [x.name, x.lastName])];

См. Подтверждение нижеприведенная концепция:

var officers = [
  { id: 20, name: 'Captain', lastName: 'Piett' },
  { id: 24, name: 'General', lastName: 'Veers'  },
  { id: 56, name: 'Admiral', lastName: 'Ozzel'  },
  { id: 88, name: 'Commander', lastName: 'Jerjerrod'  }
];

var officersIds = [['x', 'y'], ...officers.map(x => [x.name, x.lastName])];

console.log(officersIds);

Однако, если вы хотите добавить ['x', 'y'] к каждому элементу в массиве, вы должны сделать это вместо этого:

var officersIds = officers.map(x => [['x', 'y'], [x.name, x.lastName]]);

var officers = [
  { id: 20, name: 'Captain', lastName: 'Piett' },
  { id: 24, name: 'General', lastName: 'Veers'  },
  { id: 56, name: 'Admiral', lastName: 'Ozzel'  },
  { id: 88, name: 'Commander', lastName: 'Jerjerrod'  }
];

var officersIds = officers.map(x => [['x', 'y'], [x.name, x.lastName]]);

console.log(officersIds);
0 голосов
/ 07 января 2020
var officers = [
  { id: 20, name: 'Captain', lastName: 'Piett' },
  { id: 24, name: 'General', lastName: 'Veers'  },
  { id: 56, name: 'Admiral', lastName: 'Ozzel'  },
  { id: 88, name: 'Commander', lastName: 'Jerjerrod' },
];

officers.unshift({ name: x, lastName: y });

var officersIds = officers.map(x => [x.name, x.lastName]);

Или

var officers = [
      { id: 20, name: 'Captain', lastName: 'Piett' },
      { id: 24, name: 'General', lastName: 'Veers'  },
      { id: 56, name: 'Admiral', lastName: 'Ozzel'  },
      { id: 88, name: 'Commander', lastName: 'Jerjerrod' },
    ];


    var officersIds = officers.map(x => [x.name, x.lastName]);

    officersIds.unshift(["x", "y" ]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...