列出数组内的元素

时间:2012-07-10 04:19:04

标签: javascript arrays json recursion hash

我正在尝试将值存储在javascript对象表示法中。我已经完成了一些编程,并将所有发生的内容存储到用逗号分隔的字符串中,如果我试图找到的术语是一个数组,我得到[object object]作为回报,因为它是一个数组。我想知道如何将该数组中的所有项目存储到以逗号分隔的变量中,例如,如果我选择“时间”,那么它应该返回Dec 9, 1, 2012

Ive到达的部分返回值,如果它是非数组http://jsbin.com/obehog/3/edit

并且阵列的深度可能会发生变化,在每种情况下它都不会相同。所以通过循环将无法正常工作..

1 个答案:

答案 0 :(得分:1)

如果选择“时间”,则结果为数组,如:

[[{
    "term": "Dec 9",
    "Dec_9": [{
        "count": 1,
        "term": "2012"
    }]
}]]

如果你想要像Dec 9, 1, 2012那样的结果,你需要一个方法来将一个对象解析为字符串(或字符串数​​组),代码如下:

function valuesOfObj(obj, result) {
    result = result || [];
    if (typeof obj === 'object') {
        for (var k in obj) {
            if (obj.hasOwnProperty(k)) {
                arguments.callee(obj[k], result);
            }
        }
    } else {
        result.push(obj);
    }
    return result;
}

console.log(valuesOfObj([{
    "term": "Dec 9",
    "Dec_9": [{
        "count": 1,
        "term": "2012"
    }]
}]).join(', ')); // -> Dec 9, 1, 2012

full demo

顺便说一下,你做的很棒,还有其他一些类似jsonselectJSONQuery的实现,希望对你有用。