Как «объединить / объединить» массив и объект с одним и тем же свойством в плоский массив (используя Javascript)? - PullRequest
0 голосов
/ 26 октября 2018

Итак, у меня есть массив с некоторыми элементами: ['apple','banana','strawberry','peach','orange'].У меня также есть объект с такими же элементами (но не всеми) в качестве свойств:

{banana : 0,
strawberry : 2,
peach : 1}

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

['apple',  'not found'
'banana',     '0'
'strawberry,  '2'
'peach',      '1'
'orange',  'not found']

И в конце я хочу записать данные в CSV-файл.Для этого я использую модуль fast-csv.

Я пытался сделать цикл for.Есть ли более быстрый и эффективный способ?

Правка: изменен 2D-массив на плоский массив

Ответы [ 3 ]

0 голосов
/ 26 октября 2018
var item = ['apple','banana','strawberry','peach','orange'];
var it = {banana : 0,strawberry : 2,peach : 1};

item.map((key)=>{ return[ key, !it.hasOwnProperty(key) ? 'not found': it[key]];  })
0 голосов
/ 26 октября 2018

Если вы хотите получить плоский массив (не 2D) в соответствии с примером вывода, вы можете объединить ответ от @Ele и добавить оператор распространения, например, так:

let array = ['apple','banana','strawberry','peach','orange'],
    obj = {banana : 0,strawberry : 2,peach : 1},
    result = [].concat(...array.map(s => [s, s in obj ? obj[s] : "Not found"]));
    
console.log(result);
0 голосов
/ 26 октября 2018

Вы можете использовать функцию Array.prototype.map для создания нового массива с желаемым выводом.

let array = ['apple','banana','strawberry','peach','orange'],
    obj = {banana : 0,strawberry : 2,peach : 1},
    result = array.map(s => [s, s in obj ? obj[s] : "Not found"]);
    
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...