在函数中获取JavaScript的迭代器

时间:2015-06-22 15:33:38

标签: javascript iterator for-in-loop

我想通过使用迭代器而不是调用... in来使用for ... in功能。根据我的理解,我应该能够调用JavaScript在内部调用for ... in以提取迭代器。我只是不知道我需要打电话。

基本上,如果我想迭代每个键值对,我可以做类似的事情:

var data = {
    foo: 42,
    bar: {
        asdf: "hello world",
        qwerty: 0
    },
    baz: [3,1,4]
};

function walk(obj) {
    var stack = new Array();
    stack.push([obj.iterator, obj]);
    while (stack.length > 0) {
        if (stack[stack.length-1][0].hasNext()) {
            var next = stack[stack.length-1].next();
            document.getElementById("test").innerHTML += next + ": " + stack[stack.length-1][0][next] + "<br/>";
            stack.push(stack[stack.length-1][0][next]);
        } else {
            stack.pop();
        }
    }
}

walk(data);
显然,“obj.iterator”,“。next()”和“.hasNext()”只是伪代码,所以它实际上不起作用,但这基本上就是我想要的迭代器。

我该怎么做?

0 个答案:

没有答案