从对象数组返回值[关闭]

问题描述 投票:-2回答:3

我有以下结构

   const objArray = [ { shiftId: 89192 },
       { shiftId: 89193 },
       { shiftId: 89190 } ]

一组对象。我试图映射并提取shiftId的值

我所做的是object.map(el=> Object.values(el));but这个映射返回以下结构,因为Object.values遗憾地返回一个数组。

[ [ 89192 ], [ 89193 ], [ 89190 ] ]

嵌套数组只有一个元素。如何将其映射到仅支持数组。

javascript arrays object
3个回答
1
投票

您可以从第一个找到的值获得该属性。

var array = [{ anonymous: { shiftId: 89192 } }, { anonymous: { shiftId: 89193 } }, { anonymous: { shiftId: 89190 } }],
values = array.map(o => Object.values(o)[0].shiftId);

console.log(values);

0
投票

如果要提取shiftId属性,只需指定要提取该特定属性,而不是使用Object.values

const shiftIds = object.map(({ shiftId }) => shiftId);

请注意,你有一个数组 - 如果你调用变量arrOfShiftObjs或类似的东西,你的代码将更容易理解,而不是称之为object

要从每个项目中提取多个值并将它们放入一个更大的数组中,请使用flatMap

const arr = [{
    shiftId: 89192,
    id: 'id'
  },
  {
    shiftId: 89193,
    id: 'id'
  },
  {
    shiftId: 89190,
    id: 'id'
  }
];
const values = arr.flatMap(Object.values);
console.log(values);

或者,如果对象还包含您不想包含的其他属性,并且您只需要shiftIdid

const arr = [{
    shiftId: 89192,
    id: 'id'
  },
  {
    shiftId: 89193,
    id: 'id'
  },
  {
    shiftId: 89190,
    id: 'id'
  }
];
const values = arr.flatMap(({ shiftId, id }) => [shiftId, id]);
console.log(values);

与使用所有较新的功能一样,如果您想支持尚未安装的浏览器,请使用polyfill。当然,你也可以改为reduce

const arr = [{
    shiftId: 89192,
    id: 'id'
  },
  {
    shiftId: 89193,
    id: 'id'
  },
  {
    shiftId: 89190,
    id: 'id'
  }
];
const values = arr.reduce((a, { shiftId, id }) => {
  a.push(shiftId, id);
  return a;
}, []);
console.log(values);

0
投票

使用Object destructuring和Array.prototype.map

let array = [{ anonymous: { shiftId: 89192 } }, { anonymous: { shiftId: 89193 } }, { anonymous: { shiftId: 89190 } }]

let out = array.map(({anonymous: {shiftId}}) => shiftId)
console.log(out)
© www.soinside.com 2019 - 2024. All rights reserved.