Reputation: 109
I have a list of friuts. e.g.
var Fruits={
"Banana": {
"Price": "50",
"quility": "good"
},
"Mango": {
"Price": "100",
"quility": "best"
},
"Orange": {
"Price": "80",
"quility": "good"
},
"Apple": {
"Price": "150",
"quility": "best"
}
}
And, an array which contain Fruits name which I want to extract. e.g.
var SpecificFruits = ["Banana", "Mango"]
based upon above array, I want to extract fruits object and want result like below.
var results={
"Banana": {
"Price": "50",
"quility": "good"
},
"Mango": {
"Price": "100",
"quility": "best"
"quility": "best"
}
}
Any help/suggestion would be appreciated.
Upvotes: 1
Views: 83
Reputation: 10262
you could also use reduce()
and Object.assign()
to get the required result.
DEMO
var Fruits={"Banana": {"Price": "50","quility": "good"},"Mango": {"Price": "100","quility": "best"},"Orange": {"Price": "80","quility": "good"},"Apple": {"Price": "150","quility": "best"}},
SpecificFruits = ["Banana", "Mango"];
let result = SpecificFruits.reduce((r,v)=>Object.assign(r,(Fruits[v]?{[v]:Fruits[v]}:{})),{});
console.log(result)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Upvotes: 1
Reputation: 423
var SpecificFruits = ["Banana", "Mango"];
var result = {};
SpecificFruits.forEach(function(fruit) {
if( fruits[ fruit ] ){
result[ fruit ] = fruits[fruit];
}
});
Upvotes: 1
Reputation: 48357
You can use _.pick
method by passing the initial object and the array of properties desired.
var Fruits={ "Banana": { "Price": "50", "quility": "good" }, "Mango": { "Price": "100", "quility": "best" }, "Orange": { "Price": "80", "quility": "good" }, "Apple": { "Price": "150", "quility": "best" } }
var SpecificFruits = ["Banana", "Mango"]
var result = _.pick(Fruits ,SpecificFruits);
console.log(result);
<script src="https://cdn.jsdelivr.net/npm/[email protected]/lodash.min.js"></script>
Another method is to use reduce
method in order to write a clean solution without any library.
var Fruits = {"Banana":{"Price":"50","quility":"good"},"Mango":{"Price":"100","quility":"best"},"Orange":{"Price":"80","quility":"good"},"Apple":{"Price":"150","quility":"best"}}
var SpecificFruits = ["Banana", "Mango"]
var result = SpecificFruits.reduce((fruits, elem) => { fruits[elem] = Fruits[elem]; return fruits; }, {});
console.log(result);
Upvotes: 0
Reputation: 680
var fruits={
"Banana": {
"Price": "50",
"quility": "good"
},
"Mango": {
"Price": "100",
"quility": "best"
},
"Orange": {
"Price": "80",
"quility": "good"
},
"Apple": {
"Price": "150",
"quility": "best"
}
}
var SpecificFruits = ["Banana", "Mango"];
var result = {};
SpecificFruits.forEach( function( fruit ){
if( fruits[ fruit ] ){
result[ fruit ] = fruits[ fruit ];
}
});
console.log( result );
Upvotes: 1
Reputation: 3316
You can achieve this by simply doing:
let result = {}
SpecificFruits.forEach((fruit) => {
if(Fruits[fruit]) {
result[fruit] = Fruits[fruit]
}
})
Upvotes: 1
Reputation: 122037
You can use _.pick
method that takes object and array of keys, and returns a new object with properties from an array.
var Fruits = {"Banana":{"Price":"50","quility":"good"},"Mango":{"Price":"100","quility":"best"},"Orange":{"Price":"80","quility":"good"},"Apple":{"Price":"150","quility":"best"}}
var SpecificFruits = ["Banana", "Mango"]
const result = _.pick(Fruits, SpecificFruits);
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.10/lodash.js"></script>
Upvotes: 0