Поэтому у меня есть массив с некоторыми элементами: ['apple','banana','strawberry','peach','orange']
. У меня также есть объект с одинаковыми элементами (но не со всеми) в качестве свойств:
{banana : 0,
strawberry : 2,
peach : 1}
Я хочу создать плоский массив с элементами и значениями theis, как показано ниже:
['apple', 'not found'
'banana', '0'
'strawberry, '2'
'peach', '1'
'orange', 'not found']
И в конце я хочу записать данные в файл csv. Для этого я использую модуль fast-csv.
Я пробовал делать с циклом for. Есть ли более эффективный способ?
Изменение: изменили 2D-массив на плоский массив
Вы можете использовать функцию 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; }
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]]; })
key
еще not found
.
Если вы хотите получить плоский массив (а не 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);
result = [].concat(...array.map(s => [s, s in obj ? obj[s] : "Not found"]));
производить желаемый результат плоского массива, а не многомерного массива.