Я хочу отобразить ниже массива все значения свойств модели в одном массиве - PullRequest
2 голосов
/ 13 мая 2019

Я хочу перебрать этот массив и чтобы все массивы свойств модели были сохранены в одном массиве.

var arr = [{car:"Honda", model:["a","b","c"]},
       {car:"Nissan", model:["a","b","c"]},
       {car:"Chevrolet", model:["a","b","c"]},
      ]

Ответы [ 3 ]

1 голос
/ 13 мая 2019

Смысл Array.flatMap в том, что он очень полезен, но не имеет полной поддержки в IE.

То, что вам нужно, также легко можно сделать в одну строку с помощью Array.reduce и ES6, например:

var arr = [{car:"Honda", model:["a","b","c"]},{car:"Nissan", model:["a","b","c"]},{car:"Chevrolet", model:["a","b","c"]}]

let result = arr.reduce((r,{model}) => [...model, ...r], [])

console.log(result)
1 голос
/ 13 мая 2019

Вы можете использовать flatMap() и вернуть это model свойство arr в flatMap()

var arr = [{car:"Honda", model:["a","b","c"]},
       {car:"Nissan", model:["a","b","c"]},
       {car:"Chevrolet", model:["a","b","c"]},
      ]
      
const res = arr.flatMap(x => x.model);

console.log(res)
0 голосов
/ 13 мая 2019

Использование flatMap с деструктуризацией:

var arr = [{car:"Honda", model:["a","b","c"]},{car:"Nissan", model:["a","b","c"]},{car:"Chevrolet", model:["a","b","c"]}];

const res = arr.flatMap(({ model }) => model);

console.log(res);

Синтаксис ES5:

var arr = [{car:"Honda", model:["a","b","c"]},{car:"Nissan", model:["a","b","c"]},{car:"Chevrolet", model:["a","b","c"]}];

var res = arr.map(function(item) {
  return item.model;
}).reduce(function(acc, curr) {
  return acc.concat(curr);
});

console.log(res);

Если вы хотите удалить дубликаты, используйте Set:

var arr = [{car:"Honda", model:["a","b","c"]},{car:"Nissan", model:["a","b","c"]},{car:"Chevrolet", model:["a","b","c"]}];

const res = [...new Set(arr.flatMap(({ model }) => model))];

console.log(res);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...