0

我的数据集是一个对象数组,它们都只有两个键(idname):

[{ id: 1, name: 'Foo'}, { id: 2, name: 'Bar'}, { id: 3, name: 'FooBar'}, { id: 4, name: 'BarFoo'}]

我想以这样一种方式解构它们,最终分别拥有一个 id-array 和一个 name-array:

[1, 2, 3, 4] // ids
['Foo', 'Bar', 'FooBar', 'BarFoo'] // name

我是这样做的,但我认为通过析构可能会做得更好:

const data = [{ id: 1, name: 'Foo'}, { id: 2, name: 'Bar'}, { id: 3, name: 'FooBar'}, { id: 4, name: 'BarFoo'}]

let ids = []
let names = []
data.forEach(obj => {
  ids.push(obj.id)
  names.push(obj.name)  
})

console.log(ids)
console.log(names)

4

3 回答 3

3

const arr = [
  { id: 1, name: 'Foo'}, 
  { id: 2, name: 'Bar'}, 
  { id: 3, name: 'FooBar'}, 
  { id: 4, name: 'BarFoo'}
]

const {ids, names} = {ids: arr.map(a => a.id), names: arr.map(a => a.name)}

console.log(ids)
console.log(names)

于 2021-02-23T09:35:16.613 回答
2

您可以使用

data.map(x => x.id)
data.map(x => x.name)

获取数组

于 2021-02-23T09:25:32.843 回答
0

let data = [{ id: 1, name: 'Foo'}, { id: 2, name: 'Bar'}, { id: 3, name: 'FooBar'}, { id: 4, name: 'BarFoo'}];

const formatData = (data) => {
  return data.reduce((res, { id, name }) => {
    res.ids.push(id);
    res.names.push(name);
    return res;
  }, { ids: [], names: [] })
}

const {ids, names} = formatData(data);

console.log("ids: ", ids);
console.log("names: ", names);
.as-console-wrapper {
  max-height: 100% !important;
}

let data = [{ id: 1, name: 'Foo'}, { id: 2, name: 'Bar'}, { id: 3, name: 'FooBar'}, { id: 4, name: 'BarFoo'}];

const ids = data.map(({ id }) => id );
const names = data.map(({ name }) => name );

console.log("ids: ", ids);
console.log("names: ", names);
.as-console-wrapper {
  max-height: 100% !important;
}

于 2021-02-23T09:35:21.387 回答