4

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

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

之后,我想获取和oid值以及相应的cid值,例如,oid=2一次cid=107,一次,oid=4以此类推cid=98。我正在尝试为此使用jquery,ajax。

我已经为此尝试了很多答案,例如:Javascript: Getting all existing keys in a JSON array and loop 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); }

但这所做的只是返回密钥名称,该名称再次无法使用。

4

3 回答 3

9

所以,你有一个键/值对数组。循环数组,在每个索引处记录每一对:

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/

于 2013-08-07T12:57:46.400 回答
1

这是您拥有的数组//让我们将其称为:

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

要获得第一个元素:

a[0]// 这会给你第一个对象,即{"oid":"2","cid":"107"}

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

等等 ...

希望有帮助。`

于 2013-08-07T13:03:20.593 回答
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实现相同的目的

于 2013-08-07T13:07:01.090 回答