Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用对象键组成数组_Javascript - Fatal编程技术网

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 key
a
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)