使用参数迭代Javascript对象
我有一个javascript对象,如下所示:使用参数迭代Javascript对象,javascript,arrays,json,iterator,Javascript,Arrays,Json,Iterator,我有一个javascript对象,如下所示: data = { 'id': my_id, 'report': my_report, 'type': my_selection, 'select': { 'valid': { 'table': { 'pass': ['x', 'y', 'z'], 'fail': ['x', 'y', 'z']
data = {
'id': my_id,
'report': my_report,
'type': my_selection,
'select': {
'valid': {
'table': {
'pass': ['x', 'y', 'z'],
'fail': ['x', 'y', 'z']
}
},
'invalid': {
'table': {
'pass': ['x', 'y', 'z'],
'fail': ['x', 'y', 'z']
}
}
}
};
我想使用迭代器(双迭代器?)提取所有有效/无效的表通过/失败数据
因此,我想创建一个迭代器,它接受参数('valid','invalid'),另一个接受参数('pass','fail')
我使用此代码段作为示例,以使其中一个迭代器工作:
function iterate() {
let items = [];
for (let iterator of arguments) {
items.push(data.select[iterator]);
}
return items;
}
var selector_types = iterate('valid', 'invalid');
这将按预期返回“表”对象:
0 {table: Object}
1 {table: Object}
但理想情况下,iterate()将包含两组参数,类似于:
function iterate() {
let items = [];
for (let iterator of arguments) {
items.push(data.select[iterator[0]].table[iterator[1]]);
}
return items;
}
var selector_types = iterate(['valid', 'invalid'], ['pass', 'fail']);
其思想是一次性获得有效/无效密钥的通过/失败数据。这(当然)不起作用,返回未定义
对于我正在尝试的问题,是否有一个迭代的解决方案
问候,
MJ一些嵌套循环怎么样
function iterate() {
let items = [];
for (let i of arguments[0]) {
for (let j of arguments[1]) {
items.push(data.select[i].table[j]);
}
}
return items;
}
你循环通过状态
有效
和无效
,然后对每一个状态循环通过其通过
和失败
状态,这意味着你将总共循环通过四个状态。@MJ,你能告诉我,你的最终结果应该是什么吗?@Harmandeep Singh Kalsi,所讨论的数据位于localStorage变量中。我想根据选择器(有效或无效)在中读取该数据,并从所有数组中提取所有相关数据。感谢@Toastrackenigma的响应。我尝试了您的解决方案并收到以下消息:TypeError:undefined不是一个对象(评估'data.select[I]')@MikeJames嗯,奇怪,它对我有效。您传递的数据
对象和参数是否与问题中的参数相同?这里有一个JSfiddle正在运行:基本上是的。我发布的数据对象在结构上与我正在使用的数据对象的版本相同,但通过减少选择器和数组的数量而简化,但直接从创建对象的原型复制。我会仔细考虑一下,看看问题出在哪里。。。谢谢!