Reputation: 50
targetId = [313,309,307,318,317]
data={
313:[{time:..., value:...},
{time:..., value:...},
{time:..., value:...},
{time:..., value:...},
],
303:[{time:..., value:...},
{time:..., value:...},
{time:..., value:...},
{time:..., value:...},
],
309:[{time:..., value:...},
{time:..., value:...},
{time:..., value:...},
{time:..., value:...},
],
307:[{time:..., value:...},
{time:..., value:...},
{time:..., value:...},
{time:..., value:...},
],
322:[{time:..., value:...},
{time:..., value:...},
{time:..., value:...},
{time:..., value:...},
],
318:[{time:..., value:...},
{time:..., value:...},
{time:..., value:...},
{time:..., value:...},
],
317:[{time:..., value:...},
{time:..., value:...},
{time:..., value:...},
{time:..., value:...},
],
311:[{time:..., value:...},
{time:..., value:...},
{time:..., value:...},
{time:..., value:...},
]
}
Can someone help me please. So I need to loop through data object and if data property match with one of number from targetId list then I need to extract all values from that property and store them in separate list.
for (let i = 0; i < targetId.length; i++) {
if(targetId[i] === data.[property])
separateList.push(data.[property].value)
}
I guess something like this should maybe do it but need to somehow add looping through object
Upvotes: 1
Views: 76
Reputation: 28959
You can Array#map
over targetId
and pick items from data
and extract values as an array again using .map()
:
targetId.map(
id => data[id].map(({value}) => value)
);
const targetId = [313,309,307,318,317]
const data = {
313:[
{time:3131, value:3131},
{time:3132, value:3132},
{time:3133, value:3133},
{time:3134, value:3134},
],
303:[
{time:3031, value:3031},
{time:3032, value:3032},
{time:3033, value:3033},
{time:3034, value:3034},
],
309:[
{time:3091, value:3091},
{time:3092, value:3092},
{time:3093, value:3093},
{time:3094, value:3094},
],
307:[
{time:3071, value:3071},
{time:3072, value:3072},
{time:3073, value:3073},
{time:3074, value:3074},
],
322:[
{time:3221, value:3221},
{time:3222, value:3222},
{time:3223, value:3223},
{time:3224, value:3224},
],
318:[
{time:3181, value:3181},
{time:3182, value:3182},
{time:3183, value:3183},
{time:3184, value:3184},
],
317:[
{time:3171, value:3171},
{time:3172, value:3172},
{time:3173, value:3173},
{time:3174, value:3174},
],
311:[
{time:3111, value:3111},
{time:3112, value:3112},
{time:3113, value:3113},
{time:3114, value:3114},
]
}
const result = targetId.map(
id => data[id].map(({value}) => value)
);
console.log(result);
If you want a single array of values, not an array of array of values, then use Array#flatMap
:
targetId.flatMap(
id => data[id].map(({value}) => value)
);
const targetId = [313,309,307,318,317]
const data = {
313:[
{time:3131, value:3131},
{time:3132, value:3132},
{time:3133, value:3133},
{time:3134, value:3134},
],
303:[
{time:3031, value:3031},
{time:3032, value:3032},
{time:3033, value:3033},
{time:3034, value:3034},
],
309:[
{time:3091, value:3091},
{time:3092, value:3092},
{time:3093, value:3093},
{time:3094, value:3094},
],
307:[
{time:3071, value:3071},
{time:3072, value:3072},
{time:3073, value:3073},
{time:3074, value:3074},
],
322:[
{time:3221, value:3221},
{time:3222, value:3222},
{time:3223, value:3223},
{time:3224, value:3224},
],
318:[
{time:3181, value:3181},
{time:3182, value:3182},
{time:3183, value:3183},
{time:3184, value:3184},
],
317:[
{time:3171, value:3171},
{time:3172, value:3172},
{time:3173, value:3173},
{time:3174, value:3174},
],
311:[
{time:3111, value:3111},
{time:3112, value:3112},
{time:3113, value:3113},
{time:3114, value:3114},
]
}
const result = targetId.flatMap(
id => data[id].map(({value}) => value)
);
console.log(result);
If targetId
might have items that aren't in data
, then you can Array#filter
and then .map()
/.flatMap()
:
targetId
.filter(id => id in data)
.map(id => data[id].map(({value}) => value))
const targetId = [313,309, 9001, 307,318,317, 42]
const data = {
313:[
{time:3131, value:3131},
{time:3132, value:3132},
{time:3133, value:3133},
{time:3134, value:3134},
],
303:[
{time:3031, value:3031},
{time:3032, value:3032},
{time:3033, value:3033},
{time:3034, value:3034},
],
309:[
{time:3091, value:3091},
{time:3092, value:3092},
{time:3093, value:3093},
{time:3094, value:3094},
],
307:[
{time:3071, value:3071},
{time:3072, value:3072},
{time:3073, value:3073},
{time:3074, value:3074},
],
322:[
{time:3221, value:3221},
{time:3222, value:3222},
{time:3223, value:3223},
{time:3224, value:3224},
],
318:[
{time:3181, value:3181},
{time:3182, value:3182},
{time:3183, value:3183},
{time:3184, value:3184},
],
317:[
{time:3171, value:3171},
{time:3172, value:3172},
{time:3173, value:3173},
{time:3174, value:3174},
],
311:[
{time:3111, value:3111},
{time:3112, value:3112},
{time:3113, value:3113},
{time:3114, value:3114},
]
}
const result = targetId
.filter(id => id in data)
.map(id => data[id].map(({value}) => value));
console.log(result);
Upvotes: 2