我是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>
答案 0 :(得分:2)
首先myObj.Initial.claim
是一个数组而不是一个对象,最好将其命名为myArr
而不是myObj
。
在访问可能存在或不存在的对象属性之前,您必须先使用myObj.hasOwnProperty
方法检查它。
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;
答案 1 :(得分:0)
您可以使用hasOwnProperty
功能检查损坏是否为自动,请查看以下代码段。
'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;
答案 2 :(得分:0)
您可以使用 hasOwnProperty 来检查自动是否存在。
例如:
myObj.forEach(function(val) {
if (val.damage.hasOwnProperty('auto') && val.damage.auto) {
console.log(val.first, val.last);
}
});