从javascript JSON对象中查找key的值

时间:2017-08-23 09:39:03

标签: javascript json

我有这个对象值

var data = {
    "questions": {
        "0": {
            "0": "17",
            "1": "12"
        },
        "1": {
            "0": "22",
            "1": "34"
        },
        "2": {
            "0": "52",
            "1": "61"
        }
    }
}

我正试图从这些对象中获取价值,因为我已经尝试过以下的东西,而不是我真正想要的东西。

alert(Object.keys(data.questions[0])); // Output : 0,1
alert(Object.keys(data.questions[0][0])); // Output : 0
alert(Object.keys(data.questions[0][1])); // Output : 0

任何人都可以帮我找到上述键的价值,如:

questions[0][0] = 17 
questions[0][1] = 12 

5 个答案:

答案 0 :(得分:1)

您获得的结果不是Object.keys

var data = { questions: { 0: { 0: "17", 1: "12" }, 1: { 0: "22", 1: "34" }, 2: { 0: "52", 1: "61" } } };

console.log(data.questions[0]);    // { 0: "17", 1: "12" }
console.log(data.questions[0][0]); // 17
console.log(data.questions[0][1]); // 12

要搜索值的键路径,可以通过检查所有键和对象来使用迭代和递归方法。

function findValue(object, value) {
    var p;
    Object.keys(object).some(function (k) {
        var t;
        if (object[k] === value) {
            p = [k];
            return true;
        }
        if (object[k] && typeof object[k] === 'object' && (t = findValue(object[k], value))) {
            p = [k].concat(t);
            return true;
        }
    });
    return p;
}

var data = { questions: { 0: { 0: "17", 1: "12" }, 1: { 0: "22", 1: "34" }, 2: { 0: "52", 1: "61" } } };

console.log(findValue(data, '17'));
console.log(findValue(data, '34'));
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:1)

要获取任何特定问题的长度(在您的数据结构中),请使用

Object.keys(data.questions["0"])Object.keys(data.questions["1"])

获取任何问题的价值

data.questions["0"]["0"]data.questions["0"]["1"]data.questions["1"]["0"]依此类推..

答案 2 :(得分:1)

试试这样。



var data = {
    "questions": {
        "0": {
            "0": "17",
            "1": "12"
        },
        "1": {
            "0": "22",
            "1": "34"
        },
        "2": {
            "0": "52",
            "1": "61"
        }
    }
}

console.log(data.questions["0"]);
console.log(data.questions["0"]["0"]);
console.log(data.questions["0"]["1"]);




答案 3 :(得分:0)

您可以更改数据结构吗?如果我是你,我会将其更改为以下内容:

var data = {
  "questions": [
      [17, 22],
      [22, 34],
      [52, 61]
  ]
};

console.log(data.questions[0]); // Output : 17,22
console.log(data.questions[0][0]); // Output : 17
console.log(data.questions[1][1]); // Output : 34

答案 4 :(得分:0)

访问第一个对象["0"] 要访问前两个对象:["0"]["0"],依此类推 基于上面的表达式,我们可以访问像这样的对象



var data = {
    "questions": {
        "0": {
            "0": "17",
            "1": "12"
        },
        "1": {
            "0": "22",
            "1": "34"
        },
        "2": {
            "0": "52",
            "1": "61"
        }
    }
}

console.log(data.questions["0"]);
console.log(data.questions["0"]["0"]);
console.log(data.questions["0"]["1"]);
console.log(data.questions["1"]["1"]);