2016-01-12 14 views
-1

Как получить значения из объектов JSON с помощью javascript. Я могу получить ключи (see fiddle), но я не могу получить значения, соответствующие клавишамКак получить значения из объектов JSON

Мой код ниже

var getKeys = function (arr) { 
     var key, keys = []; 
     for (i = 0; i < arr.length; i++) { 
      for (key in arr[i]) { 
       if (arr[i].hasOwnProperty(key)) { 
        keys.push(key); 
       } 
      } 
     } 
     alert(keys); 
    }; 

var a = [ { name: "Carrot", category: "Vegetable", healthiness: "Adequate" }, 
    { name: "Pork Shoulder", category: "Meat", healthiness: "Questionable" }, 
    { name: "Bubblegum", category: "Candy", healthiness: "Super High"} ] 
getKeys(a); 

То, что я хочу console.log является {ключ: значение}

+1

a недействительный объект JSON см. Http://json.org/example.html – avrono

+1

Вы просто хотите значения без ключей? Почему бы не просто нажать (arr [i] [key]) –

+0

@avrono, вы правы, но у ОП есть только ошибка в номенклатуре, у него есть массив объектов, а не JSON, но проблема не в этом. –

ответ

0

key показывать только имя свойства, используйте этот arr[i][key] как следующее, чтобы получить значение:

keys.push(arr[i][key]); 
2

Просто.

https://jsfiddle.net/3woafcz7/1/

for (i=0; i<arr.length; i++) { 
    for (key in arr[i]) { 
    keys.push(key); 
    values.push(arr[i][key]); //that's the new 
    } 
} 
+0

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

+0

Какой формат вам нужен? Вывод текста? Например, 'key: value'? –

+0

да просто возможность получить каждый ключ с его значением отдельно – Imo

0

Что именно вы хотите? Вы хотите предупредить ключ плюс его ценность?

var getKeys = function (arr) { 
    var key, keys = []; 
    for (i = 0; i < arr.length; i++) { 
     for (key in arr[i]) { 
      if (arr[i].hasOwnProperty(key)) { 
       keys.push(key +": "+ arr[i][key]); 
      } 
     } 
    } 
    alert(keys); 
}; 

Это должно быть сделано.

0

использовать только функциональна карта

var a = [ 
 
\t { name: "Carrot", category: "Vegetable", healthiness: "Adequate" }, 
 
\t { name: "Pork Shoulder", category: "Meat", healthiness: "Questionable" }, 
 
\t { name: "Bubblegum", category: "Candy", healthiness: "Super High"} 
 
] 
 

 
var names = a.map(function(obj){ 
 
\t return obj.name; 
 
}) 
 
var categorys = a.map(function(obj){ 
 
\t return obj.category; 
 
}) 
 

 
document.write('name===>'+names) 
 
document.write('<br>categorys==>'+categorys)

0

Если вы ищете массив, содержащий несколько объектов, созданных из пар ключ/значение объектов в a, это должно сделать трюк :

function getPairs(arr) { 
    return arr.reduce(function (p, c) { 
    for (var prop in c) { 
     var obj = {}; 
     obj[prop] = c[prop]; 
     p.push(obj); 
    } 
    return p; 
    }, []); 
} 

getPairs(a); 

ВЫВОД

[{"name":"Carrot"},{"category":"Vegetable"},{"healthiness":"Adequate"},{"name":"Pork Shoulder"},{"category":"Meat"},{"healthiness":"Questionable"},{"name":"Bubblegum"},{"category":"Candy"},{"healthiness":"Super High"}]; 

DEMO

0

, чтобы получить ключи от объекта Вы можете использовать: Object.keys (а);


var a = [ { name: "Carrot", category: "Vegetable", healthiness: "Adequate" }, 
    { name: "Pork Shoulder", category: "Meat", healthiness: "Questionable" }, 
    { name: "Bubblegum", category: "Candy", healthiness: "Super High"} ] 

var b = { name: "SSSS", category: "VVVVV", healthiness: "AAAAA" }; 

// using generator (ES6 only) 
Object.prototype.iter_values = function*(){ 
    var keys = Object.keys(this); 
    for (var k=0;k < keys.length; k++) { 
     yield this[keys[k]]; 
    }; 
}; 
function test_iter(o){ 
    for (v of o.iter_values()){ // note the 'of' keyword 
     console.log(v); 
    } 
}; 

// using array (ES5) 
Object.prototype.values = function() { 
    var keys = Object.keys(this); 
    var values = []; 
    for (var k=0;k < keys.length; k++) { 
     values.push(this[keys[k]]); 
    }; 
    return values; 
}; 

function test_array(o){ 
    console.log(o.values()); 
}; 

, если вы хотите, чтобы петля на значениях, использование генератора, иначе массив будет менее многословным.

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