簡體   English   中英

如何從JSON對象獲取值

[英]How to get values from JSON objects

如何使用javascript從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是{key:value}

只是。

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
  }
}

key僅顯示屬性名稱,請使用如下的arr[i][key]來獲取值:

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

你到底想要什么? 您想提醒鑰匙加上它的價值嗎?

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);
};

那應該做。

只需使用地圖功能

 var a = [ { name: "Carrot", category: "Vegetable", healthiness: "Adequate" }, { name: "Pork Shoulder", category: "Meat", healthiness: "Questionable" }, { name: "Bubblegum", category: "Candy", healthiness: "Super High"} ] var names = a.map(function(obj){ return obj.name; }) var categorys = a.map(function(obj){ return obj.category; }) document.write('name===>'+names) document.write('<br>categorys==>'+categorys) 

如果您要查找包含多個對象的數組,該數組是根據中的對象的鍵/值對創建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"}];

演示

要獲取對象的鍵,可以使用:Object.keys(a);


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());
};

如果要循環使用值,請使用generator,否則array的詳細程度將降低。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM