javascript - ES6 将对象数组映射到数组

标签 javascript arrays javascript-objects array.prototype.map

有一个对象数组

const data = [{
    "name": "08/20/2018",
    "id": "name_1"
}, {
    "name": "12/23/2018",
    "id": "name_2"
}]

我想映射这个对象数组以便得到数组

["Date 1","08/20/2018","Date 2","12/23/2018"]

我正在尝试使用 .map()

data.map((d, i) => 
 `${'Date ' + i}`
  d.name
)];

但不能用第一个 (d) 参数映射名称。

最佳答案

由于输入项和输出数组项不是一对一的,因此您将无法使用 .map。改用 reduce:

const data = [{
    "name": "08/20/2018",
    "id": "name_1"
}, {
    "name": "12/23/2018",
    "id": "name_2"
}];

const output = data.reduce((a, { name }, i) => {
  a.push('Date ' + (i + 1), name);
  return a;
}, []);
console.log(output);

.flatMap:

const data = [{
    "name": "08/20/2018",
    "id": "name_1"
}, {
    "name": "12/23/2018",
    "id": "name_2"
}];

const output = data.flatMap(({ name }, i) => (['Date ' + (i + 1), name]));
console.log(output);

(请注意,由于数组是零索引的,如果您想要输出数组中的第一项,则必须使用 i + 1,而不是 i从 1 而不是 0 开始)

关于javascript - ES6 将对象数组映射到数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59006763/

相关文章:

c - 将地址传递给指针是否会导致类型提升

java - 复制数组元素

javascript - 像这样将代码隐藏在 null 中安全吗?

javascript - 如何使用jquery渐进修改Translate

javascript - 正则表达式查找两个子字符串之间的子字符串

ruby - 数组的未定义方法 `each '

javascript - 插入数组会产生意想不到的结果

javascript - 我如何在 JavaScript 中准备嵌套键值对列表

javascript内存管理-删除复杂对象

javascript - 使用谷歌图表在单个图表中显示多条线图