ES6将对象数组映射到数组

cor*_*rry 2 javascript arrays javascript-objects array.prototype.map

有一系列对象

const data = [{
    "name": "08/20/2018",
    "id": "name_1"
}, {
    "name": "12/23/2018",
    "id": "name_2"
}]
Run Code Online (Sandbox Code Playgroud)

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

["Date 1","08/20/2018","Date 2","12/23/2018"]
Run Code Online (Sandbox Code Playgroud)

我正在尝试使用 .map()

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

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

Cer*_*nce 6

由于输入项和输出数组项不是一对一的,因此您将无法使用.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);
Run Code Online (Sandbox Code Playgroud)

.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);
Run Code Online (Sandbox Code Playgroud)

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