【问题标题】:jquery array with object from outer JSON带有来自外部 JSON 的对象的 jquery 数组
【发布时间】:2021-01-14 10:23:23
【问题描述】:

我有一个 JSON api。简单的例子在图片中

screen shot with JSON example

我要做的就是将对象从 JSON 添加到数组。 就像在这个例子中

[{title: 'Marker 1', lat: '40.371268', lang: '49.840576', id: '1', icon 'ico.png'},{ title: 'Marker 2', lat: '40.371268', lang: '49.840576', id: '2', icon 'ico.png'} ]

但是当我使用这个代码时

 $.getJSON('apiJson.php')
.done(function(data){
       randomMarkers.push(Object.values(data));
   })


console.log(randomMarkers);

我得到了 Array in Array ... 找不到解决办法。

console.log printscreen

我需要一个对象来自外部 JSON 的数组

对不起我的英语。

【问题讨论】:

  • Object.values(data) 返回一个数组,您将其推入一个数组。因此,您在数组中得到一个数组。只需使用randomMarkers = Object.values(data)。但我怀疑这是您解决不同问题的尝试。见How do I return the response from an asynchronous call?
  • randomMarkers = Object.values(data) - 不起作用(对于你的第二个问题 - 我从异步调用中得到响应。只是不能把它放在数组上可能是我需要使用的。但不能数字怎么样(
  • @Ivar 刚刚看到您的评论。我认为请求将被分页,因此正在尝试推送它。
  • @mrentonee 我发布的链接准确地解释了这给您带来麻烦的原因以及解决方法。 (你可能会说“但是console.log 正在显示它,所以它一定在那里”,but that isn't what it looks like。)

标签: jquery json getjson


【解决方案1】:

Object.values(data) 的输出默认为您提供一个数组。您正在尝试将其推送到您声明的另一个数组中,即randomMarkers

所以替换

randomMarkers.push(Object.values(data));

randomMarkers = Object.values(data);,你应该很高兴。

【讨论】:

  • 什么都没有(console.log(randomMarkers) - 给出未定义
  • 你在使用前声明了数组randomMarkers吗? var randomMarkers = [];
  • 是的。我尝试了 3 种 .var randomMarkers; var randomMarkers =[] 和 var randomMarkers ={}.. 首先它给了我 undefined.. 在第二个空数组和第三个空对象中。
  • @mrentonee 因为就像我上面所说的,您的 AJAX 请求是异步的,所以 randomMarkers = Object.values(data) 总是 被称为 console.log(randomMarkers); 之后。同样,请参阅我之前提到的链接以获取更多信息和可能的解决方案。 (是的,要经历很多事情,但这是解决您的问题的唯一合适方法。这也是 JavaScript 的重要组成部分,因此正确理解它也可以在将来为您节省很多麻烦。)
  • @ivar 是的,我现在明白了。我会尝试将所有脚本放在 getJSON 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-21
  • 2022-01-02
  • 2018-01-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多