2013-08-07 5 views
1

Во-первых, это мой 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 для этого.

Я пробовал много ответов для этого, например: 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

Пожалуйста, включите пытавшихся решения, почему они не работают, а также ожидаемые результаты. –

+0

Одна вещь, которую я предлагаю: открыть консоль js хром и посмотреть на переменную в отладчике. Тогда вы должны быть в состоянии видеть, что происходит не так (возможно, пытается получить доступ к неправильной переменной или недостаточно глубоко). – JGibbers

ответ

5

Итак, у вас есть массив пар ключ/значение. Петля массив, в каждом индексе, бревенчатый каждую пару:

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/

+0

ok .. это работает отлично .. но как я могу использовать зарегистрированные значения ??? извините, я не знаю много о console.log – xprilion

+1

@anubhavssd - Замените console.log тем, что вы хотите с ними делать. Назначьте их переменной, назначьте ввод и т. Д. Просто обратитесь к 'obj [i] .oid' и' obj [i] cid' – tymeJV

0

Это массив, который у вас есть // позволяет назвать это:

[{ "OID ":" 2" , "чид": "107"}, { "OID": "4", "чид": "98"}, { "OID": "4", "чид": "99"} ]

Чтобы получить первый элемент:

a[0] // это даст вам первый объект т.е. {"oid":"2","cid":"107"}

a[0]["oid"] // это даст вам значение первого объекта с ключом «подъязычная», т.е. 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

Смежные вопросы