Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.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_Arrays_Json_Iterator - Fatal编程技术网

使用参数迭代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']

我有一个javascript对象,如下所示:

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正在运行:基本上是的。我发布的数据对象在结构上与我正在使用的数据对象的版本相同,但通过减少选择器和数组的数量而简化,但直接从创建对象的原型复制。我会仔细考虑一下,看看问题出在哪里。。。谢谢!