Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从json数组中成对获取值_Javascript_Jquery_Ajax_Json - Fatal编程技术网

Javascript 从json数组中成对获取值

Javascript 从json数组中成对获取值,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,首先,这是我从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来实现这一点 我试过很多答案,比如:但是它们不能解决我的问题 我试过这个: for(变量i=0;i

首先,这是我从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来实现这一点

我试过很多答案,比如:但是它们不能解决我的问题

我试过这个:

for(变量i=0;i


但是,所有这些操作都是返回密钥名,而密钥名在使用时同样不起作用。

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

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);
}
var obj=[{“oid”:“2”,“cid”:“107”},{“oid”:“4”,“cid”:“98”},{“oid”:“4”,“cid”:“99”}];
对于(变量i=0;i

演示:

这是一个您拥有的阵列//我们称之为:

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

要获取第一个元素:

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

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

等等

希望有帮助。
`

基本上,您需要的是使用属性对数组中的对象进行分组

// 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"
//将一个属性映射到每个对象中的其他属性。
函数映射属性(数组、属性1、属性2){
var映射={};
对于(变量i=0;i
也许这不是你需要的确切解决方案,但我希望我能给你指明你必须前进的方向


如果您愿意使用其他库,您可以通过

实现同样的效果,请包括尝试的解决方案,为什么它们不起作用,以及预期的结果。我建议您做一件事:打开chrome的js控制台,查看调试器中的变量。然后您应该能够看到出了什么问题(可能试图访问错误的变量,或者不够深入)。好的。这很好。但是我如何使用记录的值???对不起,我对控制台不太了解。log@anubhavssd--将console.log替换为您想对其执行的任何操作。将它们分配给变量、分配给输入等。只需引用
obj[i]。oid
obj[i]cid
如何将每个“oid”分配为oid数组?就像您想要[2,4,4]数组一样