JSON 数组


作为 JSON 对象的数组

  1. [ "保时捷", "玛莎拉蒂", "兰博基尼" ]

JSON 中的数组几乎与 JavaScript 中的数组相同。

在 JSON 中,数组值的类型必须属于字符串、数字、对象、数组、布尔或 null。

在 JavaScript 中,数组值可以是以上所有类型,外加任何其他有效的 JavaScript 表达式,包括函数、日期和 undefined。


JSON 对象中的数组

数组可以是对象属性的值:

  1. {
  2. "name":"埃隆 马斯克",
  3. "age":50,
  4. "cars":[ "保时捷", "玛莎拉蒂", "兰博基尼" ]
  5. }

访问数组值

您可以通过使用索引号来访问数组值:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>JSON 数组</h1>
  5. <p>访问 JSON 对象的数组值。</p>
  6. <p id="demo">
  7. <script>
  8. var myObj, x;
  9. myObj = {
  10. "name":"埃隆 马斯克",
  11. "age":50,
  12. "cars":[ "保时捷", "玛莎拉蒂", "兰博基尼" ]
  13. };
  14. x = myObj.cars[0];
  15. document.getElementById("demo").innerHTML = x;
  16. </script>
  17. </body>
  18. </html>

遍历数组

您可以通过使用 for-in 循环来访问数组值:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>JSON 数组</h1>
  5. <p>使用 for in 循环遍历数组</p>
  6. <p id="demo">
  7. <script>
  8. var myObj, i, x = "";
  9. myObj = {
  10. "name":"埃隆 马斯克",
  11. "age":50,
  12. "cars":[ "保时捷", "玛莎拉蒂", "兰博基尼" ]
  13. };
  14. for (i in myObj.cars) {
  15. x += myObj.cars[i] + "<br>";
  16. }
  17. document.getElementById("demo").innerHTML = x;
  18. </script>
  19. </body>
  20. </html>

或者您可以使用 for 循环:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>JSON 数组</h1>
  5. <p>使用 for 循环遍历数组</p>
  6. <p id="demo">
  7. <script>
  8. var myObj, i, x = "";
  9. myObj = {
  10. "name":"埃隆 马斯克",
  11. "age":50,
  12. "cars":[ "保时捷", "玛莎拉蒂", "兰博基尼" ]
  13. };
  14. for (i = 0; i < myObj.cars.length; i++) {
  15. x += myObj.cars[i] + "<br>";
  16. }
  17. document.getElementById("demo").innerHTML = x;
  18. </script>
  19. </body>
  20. </html>

JSON 对象中的嵌套数组

数组中的值也可以另一个数组,或者甚至另一个 JSON 对象:

  1. myObj = {
  2. "name":"埃隆 马斯克",
  3. "age":50,
  4. "cars": [
  5. { "name":"保时捷", "models":[ "911", "Taycan" ] },
  6. { "name":"玛莎拉蒂", "models":[ "总裁", "Ghibli", "Levante" ] },
  7. { "name":"兰博基尼", "models":[ "Urus", "Aventador" ] }
  8. ]
  9. }

如需访问数组内部的数组,请对每个数组使用 for-in 循环:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>JSON 数组</h1>
  5. <p>遍历数组内的数组。</p>
  6. <p id="demo">
  7. <script>
  8. var myObj, i, j, x = "";
  9. myObj = {
  10. "name":"埃隆 马斯克",
  11. "age":50,
  12. "cars": [
  13. { "name":"保时捷", "models":[ "911", "Taycan" ] },
  14. { "name":"玛莎拉蒂", "models":[ "总裁", "Ghibli", "Levante" ] },
  15. { "name":"兰博基尼", "models":[ "Urus", "Aventador" ] }
  16. ]
  17. }
  18. for (i in myObj.cars) {
  19. x += "<h2>" + myObj.cars[i].name + "</h2>";
  20. for (j in myObj.cars[i].models) {
  21. x += myObj.cars[i].models[j] + "<br>";
  22. }
  23. }
  24. document.getElementById("demo").innerHTML = x;
  25. </script>
  26. </body>
  27. </html>

修改数组值

请使用索引号来修改数组:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>JSON 数组</h1>
  5. <p>如何修改 JSON 对象的数组值。</p>
  6. <p id="demo">
  7. <script>
  8. var myObj, i, x = "";
  9. myObj = {
  10. "name":"埃隆 马斯克",
  11. "age":50,
  12. "cars":[ "保时捷", "玛莎拉蒂", "兰博基尼" ]
  13. }
  14. myObj.cars[2] = "梅赛德斯奔驰";
  15. for (i in myObj.cars) {
  16. x += myObj.cars[i] + "<br>";
  17. }
  18. document.getElementById("demo").innerHTML = x;
  19. </script>
  20. </body>
  21. </html>

删除数组项目

请使用 delete 关键词来删除数组中的项目:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>JSON 数组</h1>
  5. <p>如何删除数组的属性。</p>
  6. <p id="demo">
  7. <script>
  8. var myObj, i, x = "";
  9. myObj = {
  10. "name":"埃隆 马斯克",
  11. "age":50,
  12. "cars":[ "保时捷", "玛莎拉蒂", "兰博基尼" ]
  13. }
  14. delete myObj.cars[2];
  15. for (i in myObj.cars) {
  16. x += myObj.cars[i] + "<br>";
  17. }
  18. document.getElementById("demo").innerHTML = x;
  19. </script>
  20. </body>
  21. </html>