我有一个像这样的javascript对象,
{
apple: { .... },
orange: { ... },
mango: { ... },
jackfruit: { ... }
}
我想从这个对象中获取一个新对象。我只想要cetain键的值,比如['mango', apple' ]
是否有任何过滤器函数可以使用此数组从此对象中过滤这些项目?
我的结果对象应该是
{
mango: { ... }
apple: { ... }
}
答案 0 :(得分:2)
您可以传播单个对象并将它们分配给新对象。
function substract(object, keys) {
return Object.assign({}, ...keys.map(key => ({ [key]: object[key] })));
}
var fruits = { apple: 'a', orange: 'o', mango: 'm', jackfruit: 'j' };
console.log(substract(fruits, ['mango', 'orange']));
答案 1 :(得分:0)
是否有任何过滤器功能可以从此对象中过滤这些项目 使用这个数组?
是的,您可以使用"([a-zA-Z0-9])\\1{1,}"
方法。
reduce
另一种方法是使用let dict = {
apple: { color: 'red'},
orange: { color: 'orange' },
mango: { color:'green' },
jackfruit: { color: 'yellow' }
}
let array = ['mango', 'apple' ]
console.log(array.reduce((obj, key) => ({ ...obj, [key]: dict[key] }), {}));
功能。
destructing
答案 2 :(得分:0)
您可以在forEach
fruitsObj
循环
var fruitsObj = {
apple: {rate: 100},
orange: { rate: 200 },
mango: { rate: 300 },
jackfruit: { rate: 400 }
}
var filterArray = ['mango', 'apple'];
var res = [];
filterArray.forEach((fruit)=> res.push(fruitsObj[fruit]));
console.log(res);

如果您要使用filter
和map
,可以先过滤掉密钥,然后使用map
获取该密钥的值。
var fruitsObj = {
apple: {rate: 100},
orange: { rate: 200 },
mango: { rate: 300 },
jackfruit: { rate: 400 }
}
var filterArray = ['mango', 'apple'];
var res = Object.keys(fruitsObj).filter(fruitKey => ['mango','apple'].indexOf(fruitKey) !== -1).map(filterKey => fruitsObj[filterKey]);
console.log(res);

答案 3 :(得分:0)
您可以像这样过滤特定键的数据。
var FilteredObjectsByKeys = Object.assign({}, ...['mango', 'apple'].map(x => fruits[x]));
答案 4 :(得分:0)
如果您可以使用Ramda库,只需
R.pick(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4}
R.pick(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1}
答案 5 :(得分:0)
试试这个:
var jsObj = {
apple: "Apple",
orange: "Orange",
mango: "Mango",
jackfruit: "jackFruit"
}
var arr = ['mango', 'apple'];
var newObj = {};
arr.filter(item => newObj[item] = jsObj[item]);
console.log(newObj);