首先,这是我从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); }
但所有这些操作都是返回键名,这在使用时也不起作用。
发布于 2013-08-07 20:57:46
因此,您有一个键/值对数组。在每个索引处循环数组,记录每一对:
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-07 21:03:21
这是一个数组,//让我们称它为:
{"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-07 21:07:01
基本上,您需要的是使用属性对数组中的对象进行分组。在这里,我给出了两个函数,您可以使用它们来执行此操作
// 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实现同样的效果
https://stackoverflow.com/questions/18103832
复制相似问题