Javascript 使用对象键组成数组
考虑遵循代码Javascript 使用对象键组成数组,javascript,Javascript,考虑遵循代码 const filterArray = ['a', 'b'] const objectToBeFilter = { a: { ab: 'ab', ac: 'ac', ad: 'ad' }, b: { bb: 'bb', bc: 'bc', bd: 'bd' }, c: { cb: 'cb', cc: 'cc', cd: 'cd' } } const resultWantToGet =
const filterArray = ['a', 'b']
const objectToBeFilter = {
a: {
ab: 'ab',
ac: 'ac',
ad: 'ad'
},
b: {
bb: 'bb',
bc: 'bc',
bd: 'bd'
},
c: {
cb: 'cb',
cc: 'cc',
cd: 'cd'
}
}
const resultWantToGet = [
a: {
ab: 'ab',
ac: 'ac',
ad: 'ad'
},
b: {
bb: 'bb',
bc: 'bc',
bd: 'bd'
}
]
filterary
是一个用作筛选索引的数组,objectToBeFilter
是我要处理的对象。如何使用filterArray将对象筛选为effilter,然后将其转换为数组resultWantToGet
您可以通过filterArray
映射
const filterray=['a','b']
常量objectToBeFilter={
a:{
ab:‘ab’,
ac:‘ac’,
广告:“广告”
},
b:{
bb:‘bb’,
bc:‘bc’,
屋宇署:‘屋宇署’
},
c:{
cb:‘cb’,
抄送:‘抄送’,
cd:'cd'
}
};
console.log({
…filterArray.map(key=>({[key]:objectToBeFilter[key]}))
});
您可以通过过滤器阵列映射,并扩展到新对象中:
const filterray=['a','b']
常量objectToBeFilter={
a:{
ab:‘ab’,
ac:‘ac’,
广告:“广告”
},
b:{
bb:‘bb’,
bc:‘bc’,
屋宇署:‘屋宇署’
},
c:{
cb:‘cb’,
抄送:‘抄送’,
cd:'cd'
}
};
console.log({
…filterArray.map(key=>({[key]:objectToBeFilter[key]}))
});代码>您可以使用reduce
循环并构造新对象
const filterray=['a','b']
常量objectToBeFilter={
a:{
ab:‘ab’,
ac:‘ac’,
广告:“广告”
},
b:{
bb:‘bb’,
bc:‘bc’,
屋宇署:‘屋宇署’
},
c:{
cb:‘cb’,
抄送:‘抄送’,
cd:'cd'
}
}
const resultWantToGet=filterary.reduce((c,v)=>{
if(objectToBeFilter[v])c[v]=objectToBeFilter[v];//检查objectToBeFilter中是否存在键,如果存在,则分配给累加器。
返回c;
}, {})
console.log(resultWantToGet)代码>您可以使用reduce
循环并构造新对象
const filterray=['a','b']
常量objectToBeFilter={
a:{
ab:‘ab’,
ac:‘ac’,
广告:“广告”
},
b:{
bb:‘bb’,
bc:‘bc’,
屋宇署:‘屋宇署’
},
c:{
cb:‘cb’,
抄送:‘抄送’,
cd:'cd'
}
}
const resultWantToGet=filterary.reduce((c,v)=>{
if(objectToBeFilter[v])c[v]=objectToBeFilter[v];//检查objectToBeFilter中是否存在键,如果存在,则分配给累加器。
返回c;
}, {})
console.log(resultWantToGet)
您可以使用以下代码Object.keys(objectToBeFilter)
获取过滤对象键的列表,然后过滤包含在过滤数组中的键。filter(key=>filterary.includes(key))
然后仅使用过滤属性构建一个新对象reduce((obj,key)
您可以使用以下代码Object.keys(objectToBeFilter)
获取过滤对象键的列表,然后过滤过滤器数组中包含的键。filter(key=>filterray.includes(key))
然后仅使用过滤属性reduce((obj,key)
根据您上一次的评论,您似乎想要一个对象数组。您可以简单地使用,这将为您提供在数组中键入a
和b
的objectToBeFilter
中的对象:
const filterray=['a','b']
常量objectToBeFilter={
a:{
ab:‘ab’,
ac:‘ac’,
广告:“广告”
},
b:{
bb:‘bb’,
bc:‘bc’,
屋宇署:‘屋宇署’
},
c:{
cb:‘cb’,
抄送:‘抄送’,
cd:'cd'
}
}
让result=filterary.map(key=>objectToBeFilter[key])
console.log(result)
根据您上一次的评论,您似乎想要一个对象数组。您只需使用,它将为您提供数组中键入a
和b
的objectToBeFilter
中的对象:
const filterray=['a','b']
常量objectToBeFilter={
a:{
ab:‘ab’,
ac:‘ac’,
广告:“广告”
},
b:{
bb:‘bb’,
bc:‘bc’,
屋宇署:‘屋宇署’
},
c:{
cb:‘cb’,
抄送:‘抄送’,
cd:'cd'
}
}
让result=filterary.map(key=>objectToBeFilter[key])
console.log(result)
你说你想要一个数组,但是你正在显示的“数组”有a
和b
,这是一个语法错误。你想要数组还是新对象?预期的结果是错误的resultWantToGet是一个数组包含许多对象,不是吗?不,@yuanlai,一个对象数组看起来是这样的:[{ab:'ab',ac:'ac',ad:'ad'},{bb:'bb',bc:'bc',bd:'bd'}]
(不带键)。如果这是您要找的,请参阅下面的答案。您说您想要一个数组,但“数组”您正在显示的has keya
和b
,这是一个语法错误。您想要一个数组还是新对象?预期结果是错误的resultWantToGet是一个数组包含许多对象,不是吗?不,@yuanlai,一个对象数组将如下所示:[{ab:'ab',ac:'ac',ad:'ad'},{bb bb bb bc bd'}]
(不带键)。如果这是您想要的,请参阅下面的答案。很抱歉打扰您,如何将resultWantToGet转换为数组?@yuanlai,您需要数字索引?因为我想使用长度和resultWantToGet[index]喜欢这个方法,所以我有这个想法。你可以使用Object.values
来获得所有的值。如果你想得到长度:Object.values(resultWantToGet)。length
抱歉打扰了,如何将resultWantToGet转换成数组?@yuanlai,你需要数字索引?因为我想使用length和resultWantToGet[index]喜欢这个方法,所以我有这个想法。你可以使用Object.values
来获得所有的值。如果你想得到长度:Object.values(resultWantToGet).length
const filterArray = ['a', 'b']
const objectToBeFilter = {
a: {
ab: 'ab',
ac: 'ac',
ad: 'ad'
},
b: {
bb: 'bb',
bc: 'bc',
bd: 'bd'
},
c: {
cb: 'cb',
cc: 'cc',
cd: 'cd'
}
}
const resultWantToGet = Object.keys(objectToBeFilter)
.filter(key => filterArray.includes(key))
.reduce((obj, key) => {
obj[key] = objectToBeFilter[key];
return obj;}, {});
console.log(resultWantToGet)