Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.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,我正在尝试根据show数组遍历数据,并打印数据以查看其是否正确。遍历与show数组对应的列表数组,如下所示 我希望效果如下: 常数数据=[{ 代码:200,, msg:成功, 数据:{ 名单:[{ 姓名:A,, 年龄:10岁, 徽标:aa.png, 注:aa }, { 姓名:B,, 年龄:20,, 徽标:bb.png, 注:bb }], 展示:[ 名称 年龄 ] } }] 函数初始化{ data.mapres=>{ 如果res.code==200{ console.logres.data.li

我正在尝试根据show数组遍历数据,并打印数据以查看其是否正确。遍历与show数组对应的列表数组,如下所示

我希望效果如下:

常数数据=[{ 代码:200,, msg:成功, 数据:{ 名单:[{ 姓名:A,, 年龄:10岁, 徽标:aa.png, 注:aa }, { 姓名:B,, 年龄:20,, 徽标:bb.png, 注:bb }], 展示:[ 名称 年龄 ] } }] 函数初始化{ data.mapres=>{ 如果res.code==200{ console.logres.data.list } } }
初始化 如果您只想将姓名和年龄显示为

[
{
   "name": "A",
   "age": "10",
},
{
   "name": "B",
   "age": "20",
}
]
可以使用Array.map

然后你可以这样写你的代码

常数数据=[ { 代码:'200', msg:'成功', 数据:{ 名单:[ { 名称:‘A’, 年龄:"10",, 徽标:“aa.png”, 注:“aa” }, { 名称:‘B’, 年龄:'20',, 徽标:“bb.png”, 注:“bb” } ], 显示:[“姓名”、“年龄”] } } ] 函数初始化{ data.mapres=>{ 如果res.code==200{ console.log res.data.list.mapitem=>{ 返回{ 名称:item.name, 年龄:item.age } } } } } init通过迭代show而不是硬编码name和age,如果您更改模板的结构,此代码也可以工作:

常数数据=[{ 代码:200,, msg:成功, 数据:{ 名单:[{ 姓名:A,, 年龄:10岁, 徽标:aa.png, 注:aa }, { 姓名:B,, 年龄:20,, 徽标:bb.png, 注:bb }], 展示:[ 名称 年龄 ] } }]; var ans=data[0]。data.list.mapitem=>{ var curr={}; 数据[0]。data.show.forEachprop=>{ 当前[道具]=项目[道具]; }; 返回货币; }; 洛根 常数数据=[{ 代码:200,, msg:成功, 数据:{ 名单:[{ 姓名:A,, 年龄:10岁, 徽标:aa.png, 注:aa }, { 姓名:B,, 年龄:20,, 徽标:bb.png, 注:bb }], 展示:[ 名称 年龄 ] } }]; 函数初始化{ data.mapres=>{ 如果res.code==200{ console.logres.data.list.mapfunctionlistValue{ var ret={}; res.data.show.forEachfunctionidx{ ret[idx]=listValue[idx] }; 返回ret; }; } } } 初始化 可以对数据使用.map,如果代码不是200,则返回false;如果代码不是200,则返回列表数组的映射版本。可以将此数组映射到列表中每个对象的子集。子集由show数组定义,因此您可以在此数组上使用.reduce来构建映射对象

见下例:

常数数据=[{ 代码:200,, msg:成功, 数据:{ 名单:[{ 姓名:A,, 年龄:10岁, 徽标:aa.png, 注:aa }, { 姓名:B,, 年龄:20,, 徽标:bb.png, 注:bb }], 展示:[ 名称 年龄 ] } }]; 函数初始化{ return data.mapres=>{ 如果res.code==200{ return res.data.list.mapobj=>{ 返回res.data.show.reduceacc,prop=>{…acc[prop]:obj[prop]},{}; }; } 返回false; }.filterBoolean;//过滤掉所有'false'返回 } console.loginit 您可以以更短的方式使用reduce:

常数数据=[ { 代码:200,, msg:成功, 数据:{ 名单:[ { 姓名:A,, 年龄:10岁, 徽标:aa.png, 注:aa }, { 姓名:B,, 年龄:20,, 徽标:bb.png, 注:bb } ], show:[姓名、年龄] } } ]; console.logdata[0].data.list.mapx=> 数据[0]。data.show.reducep,c=>p[c]=x[c],p,{}
;到目前为止,您尝试了什么?forvar i=0;I打印结果是正确的,但是您能否根据show:['name','age']打印结果?如果show:[name,age,logo],则您的解决方案将不起作用。另外请注意,此解决方案假定数据数组中有一个元素。如果没有元素,则会导致错误。如果有多个元素,则只使用第一个元素。@3limin4t0r谢谢,我已将嵌套循环中的映射转换为forEach“reduce”!
[
{
   "name": "A",
   "age": "10",
},
{
   "name": "B",
   "age": "20",
}
]