首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从json数组中获取成对的值

从json数组中获取成对的值
EN

Stack Overflow用户
提问于 2013-08-07 20:49:02
回答 3查看 40.8K关注 0票数 4

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

代码语言:javascript
运行
复制
[{"oid":"2","cid":"107"},{"oid":"4","cid":"98"},{"oid":"4","cid":"99"}]

在此之后,我想要获取oid值以及相应的cid值,例如,一次性获取oid=2cid=107,再次获取oid=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); }

但所有这些操作都是返回键名,这在使用时也不起作用。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-08-07 20:57:46

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

代码语言:javascript
运行
复制
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/

票数 9
EN

Stack Overflow用户

发布于 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

以此类推。

希望这能有所帮助。`

票数 1
EN

Stack Overflow用户

发布于 2013-08-07 21:07:01

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

代码语言:javascript
运行
复制
// 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实现同样的效果

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18103832

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档