首先,这是我从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和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);
}
但所有这一切都是为了返回密钥名称,这在使用时无效。
答案 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);
}
答案 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
实现相同的目标