Javascript JSES6按键数组筛选对象的正确方法
我希望获取一个对象数组,并对每个对象进行筛选,以仅返回键与数组中某个项匹配的属性 例如:Javascript JSES6按键数组筛选对象的正确方法,javascript,Javascript,我希望获取一个对象数组,并对每个对象进行筛选,以仅返回键与数组中某个项匹配的属性 例如: const myKeys = ['key_1', 'key_3']; const myArray = [ { key_1: 'Some Value A', key_2: 'Some Other Value A', key_3: 'Some Final Value A', }, { key_1: 'Some
const myKeys = ['key_1', 'key_3'];
const myArray = [
{
key_1: 'Some Value A',
key_2: 'Some Other Value A',
key_3: 'Some Final Value A',
},
{
key_1: 'Some Value B',
key_2: 'Some Other Value B',
key_3: 'Some Final Value B',
},
{
key_1: 'Some Value C',
key_2: 'Some Other Value C',
key_3: 'Some Final Value C',
},
];
应产生以下结果:
const result = [
{
key_1: 'Some Value A',
key_3: 'Some Final Value A',
},
{
key_1: 'Some Value B',
key_3: 'Some Final Value B',
},
{
key_1: 'Some Value C',
key_3: 'Some Final Value C',
},
];
我相信结合使用.map()
和.filter()
应该可以做到这一点,但我不确定如何最好地使用ES6实现以下等效功能:
const filteredData = (array, keys) => {
const newArr = [];
for (let i = 0; i < myArray.length; i++) {
const item = myArray[i];
let newObj = {};
for (let j = 0; j < myKeys.length; j++) {
const filter = myKeys[j];
newObj[filter] = item[filter];
}
newArr.push(newObj);
}
return newArr;
}
console.log(filteredData(myArray, myKeys));
const filteredData=(数组,键)=>{
常数newArr=[];
for(设i=0;i
您可以简单地循环键
并构建一个只包含这些键和相应值的新对象
const myKeys=['key_1'、'key_3'];
const myArray=[{key_1:'一些值A',key_2:'一些其他值A',key_3:'一些最终值A',},{key_1:'一些值B',key_2:'一些其他值B',key_3:'一些最终值B',},{key_1:'一些值C',key_2:'一些其他值C',key_3:'一些最终值C',},];
让final=myArray.map(v=>{
返回myKeys.reduce((op,key)=>{
op[键]=v[键]
返回操作
}, {})
})
console.log(最终版)
const myKeys=['key_1'、'key_3'];
常量myArray=[
{
键1:'某个值A',
键2:'其他值A',
键3:‘某个最终值A’,
},
{
键1:‘某些值B’,
键2:‘其他值B’,
键3:‘某些最终值B’,
},
{
键1:‘某些值C’,
键2:‘其他值C’,
键3:'某个最终值C',
},
];
const result=myArray.map(i=>Object.fromEntries(Object.entries(i).filter([k])=>myKeys.includes(k));
控制台日志(结果)
您可以.map
每个对象到它的条目,这样您就可以过滤出myKeys
中没有键的条目,然后使用.fromEntries()
构建新对象,如下所示:
const myKeys=['key_1'、'key_3'];
常量myArray=[{
键1:'某个值A',
键2:'其他值A',
键3:‘某个最终值A’,
},
{
键1:‘某些值B’,
键2:‘其他值B’,
键3:‘某些最终值B’,
},
{
键1:‘某些值C’,
键2:‘其他值C’,
键3:'某个最终值C',
},
];
const res=myArray.map(obj=>Object.fromEntries(Object.entries(obj.filter)([k,v])=>myKeys.includes(k)));
控制台日志(res)代码>您可以映射wnated条目并使用它构建对象
const
keys=['键1','键3'],
data=[{key_1:'一些值A',key_2:'一些其他值A',key_3:'一些最终值A'},{key_1:'一些值B',key_2:'一些其他值B',key_3:'一些最终值B'},{key_1:'一些值C',key_2:'一些其他值C',key_3:'一些最终值C'}],
结果=data.map(o=>Object.fromEntries(keys.map(k=>[k,o[k]]));
控制台日志(结果)代码>
。作为控制台包装{最大高度:100%!重要;顶部:0;}