访问多维JavaScript对象中的字符串子元素

时间:2017-01-07 17:57:46

标签: javascript jquery arrays object

如何访问"案例"和"注意"每个"时间"的值以下代码中的键值?

我在定义对象时遇到错误吗?



obj = {
	"1483805300000": [{"case":"77222","note":"Hello"}],
	"1483805600000": [{"case":"77333","note":"Hello 333"}]
};

for (const prop in obj) {
  $('div').html( $('div').html() + prop +'<br>');
  $('div').html( $('div').html() + prop.case +'<br>');
  $('div').html( $('div').html() + prop["note"] +'<br>');
}
&#13;
div{background:beige;padding:5px;}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<div></div>
&#13;
&#13;
&#13;

还试过这个:

&#13;
&#13;
obj = {
	"1483805300000": {"case":"77222","note":"Hello"},
	"1483805600000": {"case":"77333","note":"Hello 333"}
};

for (const prop in obj) {
  $('div').html( $('div').html() + prop +'<br>');
  $('div').html( $('div').html() + prop.case +'<br>');
  $('div').html( $('div').html() + prop["note"] +'<br>');
}
&#13;
div{background:beige;padding:5px;}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<div></div>
&#13;
&#13;
&#13;

而且,查理在评论中提出的建议也有效:

&#13;
&#13;
obj = {
	"1483805300000": {"case":"77222","note":"Hello"},
	"1483805600000": {"case":"77333","note":"Hello 333"}
};

for (const prop in obj) {
  $('div').html( $('div').html() + prop +'<br>');
  $('div').html( $('div').html() + obj[prop].case +'<br>');
  $('div').html( $('div').html() + obj[prop]["note"] +'<br>');
}
&#13;
div{background:beige;padding:5px;}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<div></div>
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:3)

您可以使用$.each().append()

const obj = {
	"1483805300000": [{"case":"77222","note":"Hello"}],
	"1483805600000": [{"case":"77333","note":"Hello 333"}]
};

let div = $("div");

$.each(obj, function(key, value) {
  div.append(`${key}<br>${value[0]["case"]}<br>${value[0]["note"]}<br><br>`
  )
})
div{background:beige;padding:5px;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">    
</script>

<div></div>

或者,使用Object.keys().map()迭代数组

中的对象

const obj = {
	"1483805300000": [{"case":"77222","note":"Hello"}],
	"1483805600000": [{"case":"77333","note":"Hello 333"}]
};

let div = $("div");

$.each(obj, function(key, value) {
  div.append(`${key}
              <br>
              ${Object.keys(value[0]).map(function(prop) {
                return `${value[0][prop]}<br>` 
                }).concat("<br>").join("")
              }`
  )
})
div{background:beige;padding:5px;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js">    
</script>

<div></div>

答案 1 :(得分:2)

删除包裹每个单独对象的数组,并使用obj[prop].propertyNameobj[prop]['propertyName']访问相应的属性值

&#13;
&#13;
obj = {
	"1483805300000": {"case":"77222","note":"Hello"},
	"1483805600000": {"case":"77333","note":"Hello 333"}
};

for (var prop in obj) {
  $('div').html( $('div').html() + prop +'<br>');
  $('div').html( $('div').html() + obj[prop].case +'<br>');
  $('div').html( $('div').html() + obj[prop]["note"] +'<br>');
}
&#13;
div{background:beige;padding:5px;}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<div></div>
&#13;
&#13;
&#13;

答案 2 :(得分:1)

您需要使用obj[prop][0].case&amp; obj[prop][0].note代替prop.case&amp; prop['note']喜欢以下。

obj = {
    "1483805300000": [{"case":"77222","note":"Hello"}],
    "1483805600000": [{"case":"77333","note":"Hello 333"}]
};

for (const prop in obj) {
    $('div').html( $('div').html() + prop +'<br>');
    $('div').html( $('div').html() + obj[prop][0].case +'<br>');
    $('div').html( $('div').html() + obj[prop][0].note +'<br>');
}
div {
    background: beige;
    padding: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div></div>

如果您不使用数组(方括号[]),则需要使用obj[prop].case&amp; obj[prop].note

obj = {
    "1483805300000": {"case":"77222","note":"Hello"},
    "1483805600000": {"case":"77333","note":"Hello 333"}
};

for (const prop in obj) {
    $('div').html( $('div').html() + prop +'<br>');
    $('div').html( $('div').html() + obj[prop].case +'<br>');
    $('div').html( $('div').html() + obj[prop].note +'<br>');
}
div{
    background: beige;
    padding: 5px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div></div>

答案 3 :(得分:1)

应该是obj[prop][0] ...

&#13;
&#13;
obj = {
  "1483805300000": [{
    "case": "77222",
    "note": "Hello"
  }],
  "1483805600000": [{
    "case": "77333",
    "note": "Hello 333"
  }]
};

for (const prop in obj) {

  $('div').html($('div').html() + prop + '<br>');
  $('div').html($('div').html() + obj[prop][0].case+'<br>');
  $('div').html($('div').html() + obj[prop][0].note + '<br>');
}
&#13;
div {
  background: beige;
  padding: 5px;
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

<div></div>
&#13;
&#13;
&#13;