0

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

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

并且数组的深度可能会改变,在每种情况下都不相同。所以通过循环将不起作用..

4

1 回答 1

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

完整的演示

顺便说一句,你做的很好,还有一些其他的实现,比如jsonselectJSONQuery,希望对你有用。

于 2012-07-10T08:13:54.843 回答