如何将特定的对象值推入数组

时间:2019-10-12 19:34:42

标签: javascript

我的对象带有键,我只想向数组添加特定值。例如给定的键[3248647, 32486481]

{
  "32486479": {
    "id": "32486479",
    "lat": 33,
    "lng": 73,
    "accuracy": 51,
    "updated_at": 1570908416
  },
  "32486480": {
    "id": "32486480",
    "lat": 33,
    "lng": 73,
    "accuracy": 51,
    "updated_at": 1570908416
  },
  "32486481": {
    "id": "32486481",
    "lat": 33,
    "lng": 73,
    "accuracy": 51,
    "updated_at": 1570908416
  },

预期结果应该是

[{
    "id": "3248647",
    "lat": 33,
    "lng": 73,
    "accuracy": 51,
    "updated_at": 1570908416,
},{
    "id": "32486481",
    "lat": 33,
    "lng": 73,
    "accuracy": 51,
    "updated_at": 1570908416
  }]

3 个答案:

答案 0 :(得分:2)

keys.map(k => obj[k])

const keys = [32486479, 32486481];

const obj = { "32486479": { "id": "32486479", "lat": 33, "lng": 73, "accuracy": 51, "updated_at": 1570908416 }, "32486480": { "id": "32486480", "lat": 33, "lng": 73, "accuracy": 51, "updated_at": 1570908416 }, "32486481": { "id": "32486481", "lat": 33, "lng": 73, "accuracy": 51, "updated_at": 1570908416 }};

console.log(keys.map(k => obj[k]))

答案 1 :(得分:1)

您可以使用Array .map方法执行此操作:

const ids = [32486479, 32486481]
const data = {
  "32486479": {
    "id": "32486479",
    "lat": 33,
    "lng": 73,
    "accuracy": 51,
    "updated_at": 1570908416
  },
  "32486480": {
    "id": "32486480",
    "lat": 33,
    "lng": 73,
    "accuracy": 51,
    "updated_at": 1570908416
  },
  "32486481": {
    "id": "32486481",
    "lat": 33,
    "lng": 73,
    "accuracy": 51,
    "updated_at": 1570908416
  }
}

const expectedResult = [{
    "id": "32486479",
    "lat": 33,
    "lng": 73,
    "accuracy": 51,
    "updated_at": 1570908416,
},{
    "id": "32486481",
    "lat": 33,
    "lng": 73,
    "accuracy": 51,
    "updated_at": 1570908416
  }]
  
 const actualResult = ids
   // loop on the ids array and use them to access object inside data
   .map(id => data[String(id)])
   // filter falsy value
   .filter(Boolean);
 
 console.log(actualResult);

答案 2 :(得分:0)

注意:直接使用Array.map(e) 是可以的,只要所有键在数据中的确具有对应的对象作为值,否则它将返回{{1 }}(对于未找到的键,结果将在位置放置undefined

更好:一个答案确实可以通过将undefined链接为假值来解决。

另一种解决方案: for...of在键.filter上查找并压入结果。

array