从json数组中成对获取值

时间:2013-08-07 12:49:02

标签: javascript jquery ajax json

首先,这是我从php源码获取的json值:

[{"oid":"2","cid":"107"},{"oid":"4","cid":"98"},{"oid":"4","cid":"99"}]

之后,我希望获得oid值以及相应的cid值,例如oid=2cid=107oid=4cid=98在另一个等等。我正在尝试使用jquery,ajax。

我为此尝试了很多答案,例如:Javascript: Getting all existing keys in a JSON arrayloop and get key/value pair for JSON array using jQuery,但它们无法解决我的问题。

我试过了:

for (var i = 0; i < L; i++) { var obj = res[i]; for (var j in obj) { alert(j); }

但所有这一切都是为了返回密钥名称,这在使用时无效。

3 个答案:

答案 0 :(得分:6)

因此,您有一组键/值对。循环数组,在每个索引处记录每对:

var obj = [{"oid":"2","cid":"107"},{"oid":"4","cid":"98"},{"oid":"4","cid":"99"}];

for (var i = 0; i < obj.length; i++) {
    console.log("PAIR " + i + ": " + obj[i].oid);
    console.log("PAIR " + i + ": " + obj[i].cid);
}

演示:http://jsfiddle.net/sTSX2/

答案 1 :(得分:1)

这是一个数组//让我们称之为:

  

[{ “OID”: “2”, “CID”: “107”},{ “OID”: “4”, “CID”: “98”},{ “OID”: “4”,” cid“:”99“}]

获得第一个元素:

a[0] //这将为您提供第一个对象,即{"oid":"2","cid":"107"}

a[0]["oid"] //这将为您提供第一个带有“oid”键的对象的值,即2

依旧......

希望有所帮助。 `

答案 2 :(得分:0)

基本上您需要的是使用属性对数组中的对象进行分组。在这里,我给出了两个可以用来执行此操作的函数

// To map a property with other property in each object. 
function mapProperties(array, property1, property2) {

    var mapping = {};

    for (var i = 0; i < data.length; i++) {
        var item = data[i];
        mapping[item[property1]] = mapping[item[property1]] || [];
        mapping[item[property1]].push(item[property2]);
    }

    return mapping;

}

// To index the items based on one property.
function indexWithProperty(array, property) {
    var indexing = {};

    for (var i = 0; i < data.length; i++) {
        var item = data[i];
        indexing[item[property]] = indexing[item[property]] || [];
        indexing[item[property]].push(item);
    }

    return indexing;
}

var data = [{
    "oid": "2",
    "cid": "107"
}, {
    "oid": "4",
    "cid": "98"
}, {
    "oid": "4",
    "cid": "99"
}];


var oidCidMapping = mapProperties(data, "oid", "cid");
console.log(oidCidMapping["2"]); // array of cids with oid "2"

var indexedByProperty = indexWithProperty(data, "oid");
console.log(indexedByProperty["4"]); // array of objects with cid "4"

可能不是您需要的确切解决方案,但我希望我能告诉您必须继续的方向。

如果您愿意使用其他库,则可以使用underscorejs

实现相同的目标