【问题标题】:How to print an array in an array from JSON in Javascript如何在Javascript中从JSON中打印数组中的数组
【发布时间】:2016-07-01 05:43:01
【问题描述】:

所以我试图用逗号在一行中打印朋友数组的所有名称,(我正在尝试学习 JS 和 JSON,并且编程知识非常少) 这是我来自互联网的数据文件 http://www.json-generator.com/

我的数组 [ { “年龄”:25, "eyeColor": "蓝色", “名称”:“莱昂·皮克特”, "电话": "+1 (834) 535-2787", “余额”:“3,632.41 美元”, "address": "856 Woodhull Street, Southmont, Wisconsin, 373", “朋友们”: [ {"id": 0,"name": "邦妮·达德利"}, {"id": 1,"name": "布莱尔霍普金斯"}, {"id": 2,"name": "伯里斯·拉拉"} ],}, { “年龄”:29, "eyeColor": "棕色", “名称”:“罗萨莱斯雷蒙德”, “余额”:“3,632.41 美元”, "电话": "+1 (935) 462-3887", "地址": "745 Havens Place, Norvelt, Florida, 6999", “朋友们”: [ {"id": 0,"name": "Theresa Burt"}, {"id": 1,"name": "穆尼·惠特尼"}, {"id": 2,"name": "赫伯特·吉尔"} ]}]

这是我的代码

var xmlhttp = new XMLHttpRequest();
var txt = "jsontst1.txt";

xmlhttp.onreadystatechange = function() {
  if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
    var myArr = JSON.parse(xmlhttp.responseText);
    myFunction(myArr);
  }
};

xmlhttp.open("GET", txt, true);
xmlhttp.send();

function myFunction(arr) {
  var out = "";
  var out2 = "";
  var i, j;
  for (i = 0; i < arr.length; i++) {
    var frndlngth = arr[i].friends.length;

    for (j = 0; j < frndlngth; j++) {
      var frnds = arr[i].friends[j];
      out2 += frnds.name;
    }

    out +=
      "Name = " + arr[i].name + "<br>" +
      "Age = " + arr[i].age + "<br>" +
      "Phone = " + arr[i].phone + "<br>" +
      "Balance = " + arr[i].balance + "<br>" +
      "Eyecolor = " + arr[i].eyeColor + "<br>" +
      "Address = " + arr[i].address + "<br>" +
      "Friends = " + out2 + "<hr>";
  }

  document.getElementById("id01").innerHTML = out;
}

在输出中好友也显示前一个数组的值?我在这里做错了什么?

【问题讨论】:

  • 参数arr的值是多少?
  • 这是我的数组在一个单独的文件中,文件的内容是从json-generator.com中提取的。
  • 你也可以分享那个数组吗?
  • [ { "age": 25, "eyeColor": "blue", "name": "Leon Pickett", "phone": "+1 (834) 535-2787", "balance ": "$3,632.41", "address": "856 Woodhull Street, Southmont, Wisconsin, 373", "friends": [ {"id": 0,"name": "Bonnie Dudley"}, {"id": 1 ,"name": "Blair Hopkins"}, {"id": 2,"name": "Burris Lara"} ],}, ] 数组太大,无法在此处发布,我只放入一组数据数组。
  • 如果您需要从数组的每个项目连接的字符串,请使用 Array.prototype.join。例如,这里是var friends = ['John', 'Mary'];friends.join(', ');,你会得到"John, Mary"

标签: javascript json multidimensional-array


【解决方案1】:

原因是out2 变量是全局变量,因此值被附加在其中,而不是在外循环后重置它。

for-loop 中将其设为本地

function myFunction(arr) {
  var out = "";
  var i, j;
  for (i = 0; i < arr.length; i++) {
    var out2 = "";
    var frndlngth = arr[i].friends.length;
    for (j = 0; j < frndlngth; j++) {
      var frnds = arr[i].friends[j];
      out2 += frnds.name;
    }
    out +=
      "Name = " + arr[i].name + "<br>" +
      "Age = " + arr[i].age + "<br>" +
      "Phone = " + arr[i].phone + "<br>" +
      "Balance = " + arr[i].balance + "<br>" +
      "Eyecolor = " + arr[i].eyeColor + "<br>" +
      "Address = " + arr[i].address + "<br>" +
      "Friends = " + out2 + "<hr>";
  }
  document.getElementById("id01").innerHTML = out;
}
var input = [{
  "age": 25,
  "eyeColor": "blue",
  "name": "Leon Pickett",
  "phone": "+1 (834) 535-2787",
  "balance": "$3,632.41",
  "address": "856 Woodhull Street, Southmont, Wisconsin, 373",
  "friends": [{
    "id": 0,
    "name": "Bonnie Dudley"
  }, {
    "id": 1,
    "name": "Blair Hopkins"
  }, {
    "id": 2,
    "name": "Burris Lara"
  }],
}, {
  "age": 29,
  "eyeColor": "brown",
  "name": "Rosales Raymond",
  "balance": "$3,632.41",
  "phone": "+1 (935) 462-3887",
  "address": "745 Havens Place, Norvelt, Florida, 6999",
  "friends": [{
    "id": 0,
    "name": "Theresa Burt"
  }, {
    "id": 1,
    "name": "Mooney Whitney"
  }, {
    "id": 2,
    "name": "Hebert Gill"
  }]
}];
myFunction(input);
&lt;div id="id01"&gt;&lt;/div&gt;

Fiddle Demo

【讨论】:

  • 非常感谢,我完全忽略了 2 并试图找出我的循环是否有问题。
  • 那不行吗?是什么让你恢复了接受?
  • 很抱歉那是错误的。我是 stackoverflow 的新手,还在学习如何使用它。
【解决方案2】:

你可以使用

var stringresult = JSON.stringify(你的对象或数组);

现在您可以像 alert(stringresult) 一样打印或提醒它。

【讨论】:

    猜你喜欢
    • 2011-10-30
    • 2021-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多