我的对象带有键,我只想向数组添加特定值。例如给定的键[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
}]
答案 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