Javascript 对象数组上的Java脚本过滤器和推送结果';将一个元素转换为另一个数组

Javascript 对象数组上的Java脚本过滤器和推送结果';将一个元素转换为另一个数组,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我有一个名为data的数组,在该数组中我有对象。 对象结构是这样的 { id:1, especial_id:34, restaurant_item:{id:1,restaurant:{res_name:'KFC'}} } 我想传递一个res_nameeg:-肯德基 我想要一个由所有特殊ID 像这样 myarr=[12,23,23] 我可以为此做类似的事情。但我想知道做这件事的更优雅的方式是什么 const数据=[ {id:1,特别是{id:6,餐厅项目:{id:5,店名:'McDonalds

我有一个名为
data
的数组,在该数组中我有
对象
。 对象结构是这样的

{
id:1,
especial_id:34,
restaurant_item:{id:1,restaurant:{res_name:'KFC'}}
}
我想传递一个
res_name
eg:-肯德基

我想要一个由所有
特殊ID

像这样 myarr=[12,23,23]

可以为此做类似的事情。但我想知道做这件事的更优雅的方式是什么

const数据=[
{id:1,特别是{id:6,餐厅项目:{id:5,店名:'McDonalds'},
{id:1,特别是{id:8,餐厅项目:{id:5,店名:'Kfc'},
{id:1,特别是{id:6,餐厅项目:{id:5,店名:'Sundine'},
{id:1,特别是{id:6,餐厅项目:{id:5,店名:'Kfc'},
];
让temp=data.filter(element=>element.restaurant\u items.res\u name==“kfc”)
设myArr=[];
每个元素的温度(元素=>myArr.push(元素特殊id));

console.log(myArr)/[8,6]
您可以
reduce
将通过测试的元素在输入上的一次迭代中推送到累加器阵列:

const数据=[
{id:1,特别是{id:6,餐厅项目:{id:5,店名:'McDonalds'},
{id:1,特别是{id:8,餐厅项目:{id:5,店名:'Kfc'},
{id:1,特别是{id:6,餐厅项目:{id:5,店名:'Sundine'},
{id:1,特别是{id:6,餐厅项目:{id:5,店名:'Kfc'},
];
console.log(
data.reduce((a,{special_id,restaurant_items:{res_name}})=>{
如果(res_name==='Kfc')a.push(特别是id)
返回a;
}, [])

);
您可以
reduce
将通过测试的元素在输入上的一次迭代中推送到累加器阵列:

const数据=[
{id:1,特别是{id:6,餐厅项目:{id:5,店名:'McDonalds'},
{id:1,特别是{id:8,餐厅项目:{id:5,店名:'Kfc'},
{id:1,特别是{id:6,餐厅项目:{id:5,店名:'Sundine'},
{id:1,特别是{id:6,餐厅项目:{id:5,店名:'Kfc'},
];
console.log(
data.reduce((a,{special_id,restaurant_items:{res_name}})=>{
如果(res_name==='Kfc')a.push(特别是id)
返回a;
}, [])
);使用

const data=[{id:1,特别标识:6,餐厅项目:{id:5,餐厅名称:'McDonalds'},{id:1,特别标识:8,餐厅项目:{id:5,餐厅名称:'Kfc'},{id:1,特别标识:6,餐厅项目:{id:5,餐厅名称:'sundeen'},{id:1,特别标识:6,餐厅项目:{id:5,特别标识:Kfc'};
让结果=数据。减少((a,c)=>{
如果(c.restaurant\u items.res\u name=='Kfc')a.push(c.special\u id);
返回a;
},[]);
控制台日志(结果)使用

const data=[{id:1,特别标识:6,餐厅项目:{id:5,餐厅名称:'McDonalds'},{id:1,特别标识:8,餐厅项目:{id:5,餐厅名称:'Kfc'},{id:1,特别标识:6,餐厅项目:{id:5,餐厅名称:'sundeen'},{id:1,特别标识:6,餐厅项目:{id:5,特别标识:Kfc'};
让结果=数据。减少((a,c)=>{
如果(c.restaurant\u items.res\u name=='Kfc')a.push(c.special\u id);
返回a;
},[]);
控制台日志(结果)您可以试试这个。它使用“Array.filter”和“Array.map”

var数据=[
{id:1,特别是{id:6,餐厅项目:{id:5,店名:'McDonalds'},
{id:1,特别是{id:8,餐厅项目:{id:5,店名:'Kfc'},
{id:1,特别是{id:6,餐厅项目:{id:5,店名:'Sundine'},
{id:1,特别是{id:6,餐厅项目:{id:5,店名:'Kfc'},
];
函数GetSpecialidsByName(名称){
返回data.filter(d=>d.restaurant\u items.res\u name.toLowerCase()==name.toLowerCase())
.map(d=>d.special_id)
}
log(getSpecialidsByName('Kfc'))
log(getspecialidsbyName('sundine'))
您可以试试这个。它使用“Array.filter”和“Array.map”

var数据=[
{id:1,特别是{id:6,餐厅项目:{id:5,店名:'McDonalds'},
{id:1,特别是{id:8,餐厅项目:{id:5,店名:'Kfc'},
{id:1,特别是{id:6,餐厅项目:{id:5,店名:'Sundine'},
{id:1,特别是{id:6,餐厅项目:{id:5,店名:'Kfc'},
];
函数GetSpecialidsByName(名称){
返回data.filter(d=>d.restaurant\u items.res\u name.toLowerCase()==name.toLowerCase())
.map(d=>d.special_id)
}
log(getSpecialidsByName('Kfc'))

console.log(getspecialidsbyName('sundine'))
只需使用
让myArry=data.filter(element=>element.restaurant\u items.res\u name=='kfc')
在“filter”之后,而不是forEach,您可以直接使用“map”来获取特殊ID。您可以查看我的答案。只需在“过滤器”之后使用
让myArry=data.filter(element=>element.restaurant\u items.res\u name==“kfc”)
,而不是forEach,您可以直接使用“map”来获取特殊ID。你可以检查我的答案。不客气:)不客气:)