В вашем массиве numDataPoints
нет массивов, но есть обычные объекты, поэтому вы не можете использовать map
.
. Вам нужно Object.values
.В качестве альтернативы гарантируется тот же порядок ключей x0
, x1
и x2
, , деструктура с {x0, x1, x2}
и затем использование [x0, x1, x2]
.
Структура numDataPoints
предполагает, что на самом деле вам нужен массив из двух массивов, каждый с тремя [x, y]
точками, а не только шестью [x, y]
точками.Если вы все еще хотите сгладить эти подмассивы, используйте concat
или flatMap
(в настоящее время кандидат 3-го этапа, скорее всего, станет частью редакции ECMAScript, завершенной в июне 2019 г.).
Вот все шесть возможностей:
const numDataPoints = [
{
x0: {x: 807, y: 625},
x1: {x: 15, y: 20},
x2: {x: 5, y: 20}
},
{
x0: {x: 11, y: 6},
x1: {x: 16, y: 21},
x2: {x: 7, y: 22}
}
];
// Object.values, same structure
console.log(numDataPoints.map((obj) => Object.values(obj).map(({x, y}) => [x, y])));
// Object.values, flattened with concat
console.log([].concat(...numDataPoints.map((obj) => Object.values(obj).map(({x, y}) => [x, y]))));
// Object.values, flattened with flatMap
console.log(numDataPoints.flatMap((obj) => Object.values(obj).map(({x, y}) => [x, y])));
// Destructuring, same structure
console.log(numDataPoints.map(({x0, x1, x2}) => [x0, x1, x2].map(({x, y}) => [x, y])));
// Destructuring, flattened with concat
console.log([].concat(...numDataPoints.map(({x0, x1, x2}) => [x0, x1, x2].map(({x, y}) => [x, y]))));
// Destructuring, flattened with flatMap
console.log(numDataPoints.flatMap(({x0, x1, x2}) => [x0, x1, x2].map(({x, y}) => [x, y])));