使用Javascript根据其他键的存在显示JSON值

时间:2017-02-12 06:46:25

标签: javascript html angularjs json

我是JavaScript新手,尝试过以下代码而无法获得它。我经历了很多其他的帖子,但没有奏效。

输出:检查是否存在自动损坏。如果是,请计算并显示First&最后一样。

var myObj, i, x = "";
myObj = {
  "Initial": {
    "claim": [{
      "first": "abc",
      "last": "xyz",
      "damage": {
        "auto": true,
        "manual": true
      }
    }, {
      "first": "mne",
      "last": "odc",
      "damage": {
        "manual": true
      }
    }, {
      "first": "svc",
      "last": "tre",
      "damage": {
        "auto": true
      }
    }, {
      "first": "tre",
      "last": "hdf",
      "damage": {}
    }]
  }
}

var myObj = myObj.Initial.claim;

console.log(myObj);

for (i = 0; i < myObj.length; i++) {
  x += myObj.first[i] + "<br>";
  x += myObj.damage.auto[i] + "<br>";
}

document.getElementById("demo").innerHTML = x;
<p id="demo"></p>

3 个答案:

答案 0 :(得分:2)

首先myObj.Initial.claim是一个数组而不是一个对象,最好将其命名为myArr而不是myObj

在访问可能存在或不存在的对象属性之前,您必须先使用myObj.hasOwnProperty方法检查它。

&#13;
&#13;
var myObj, i, x = "";
myObj = {
  "Initial": {
    "claim": [
      {
        "first": "abc",
        "last": "xyz",
        "damage": {
          "auto": true,
          "manual": true
        }
      }, 

      {
        "first": "mne",
        "last": "odc",
        "damage": {
          "manual": true
        }
      },

      {
        "first": "svc",
        "last": "tre",
        "damage": {
          "auto": true
        }
      }, 

      {
        "first": "tre",
        "last": "hdf",
        "damage": {}
      }
    ]
  }
}

var myArr = myObj.Initial.claim;

console.log(myArr);

for (i = 0; i < myArr.length; i++) {
  x += myArr[i].first + "<br>";

  if(myArr[i].damage.hasOwnProperty("auto")) {
    x += myArr[i].damage.auto + "<br>";
  }
}


document.getElementById("demo").innerHTML = x;
&#13;
<p id="demo"></p>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用hasOwnProperty功能检查损坏是否为自动,请查看以下代码段。

&#13;
&#13;
'use strict';

var claims = {
  "Initial": {
    "claim": [{
      "first": "abc",
      "last": "xyz",
      "damage": {
        "auto": true,
        "manual": true
      }
    }, {
      "first": "mne",
      "last": "odc",
      "damage": {
        "manual": true
      }
    }, {
      "first": "svc",
      "last": "tre",
      "damage": {
        "auto": true
      }
    }, {
      "first": "tre",
      "last": "hdf",
      "damage": {}
    }]
  }
};

var result = [];
for (var i = 0; i < claims.Initial.claim.length; i++) {
  if (claims.Initial.claim[i].damage.hasOwnProperty('auto')) {
    result.push(claims.Initial.claim[i]);
  }
}

console.log(result);

var x = '';
for (var i = 0; i < result.length; i++) {
  x += result[i].first + "<br>";
  x += result[i].damage.auto + "<br>";
}

document.getElementById("demo").innerHTML = x;
&#13;
<p id="demo"></p>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您可以使用 hasOwnProperty 来检查自动是否存在。

例如:

myObj.forEach(function(val) {
    if (val.damage.hasOwnProperty('auto') && val.damage.auto) {
        console.log(val.first, val.last);
    }
});