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。你可以检查我的答案。不客气:)不客气:)