JavaScript getJSON 返回数组中的重复值

标签 javascript jquery arrays json

我正在尝试解析 json 结果,但我不断在数组中获取重复的值。看起来代码运行了两次。这是我的代码,如有任何反馈,我们将不胜感激

var channels = ["ESL_SC2", "OgamingSC2", "cretetion", "freecodecamp", "storbeck", "habathcx", "RobotCaleb", "noobs2ninjas", "brunofin", "comster404"]
var clientID = "######";
var allChannels = [];
var feedReturn = [];
$(document).ready(function() {
    for (var i = 0; i < channels.length; i++) {
        allChannels[i] = channels[i];
        //allChannels[i][0] = channels[i]
        $.getJSON("https://api.twitch.tv/kraken/streams/" + channels[i] + "?
            client_id = sbp1wnku2j32dtnjj4qefhslopxq8s ",function(data){
            $.each(data, function(i) {
                if (data.stream == null) {
                    feedReturn.push(["Null", data._links.channel]);
                } else {
                    feedReturn.push(["Not Null", data._links.channel]);
                }
                //console.log(data.stream);
                // console.log(data._links.channel);
                //feedReturn.push(data.stream,data._links.channel);
            })
        })
}
});
console.log(feedReturn);

最佳答案

您正在对 data 对象调用 $.each(),这将返回一个长度等于该对象的属性数量的数组。由于返回的 API 数据有两个属性(_links、stream),因此每次 API 调用都会运行 .push() 2 次。只需删除 $.each() 即可解决数组中重复记录的问题。

$.getJSON("https://api.twitch.tv/kraken/streams/"+channels[i]+"?client_id=sbp1wnku2j32dtnjj4qefhslopxq8s",function(data){
  if(data.stream == null){

    feedReturn.push(["Null",data._links.channel]); 

  } else {

    feedReturn.push(["Not Null",data._links.channel]);
  }
});

关于JavaScript getJSON 返回数组中的重复值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42286860/

相关文章:

arrays - useState setter 方法不更新数组

javascript - Vue循环嵌套JSON麻烦

javascript - 使用 JQuery onblur 设置文本框值

jquery - jquery 问题和更新 css 背景图像未在 chrome 中加载

javascript - Node 骑士评估内部的变量未定义

javascript - Conways 生命游戏算法无法正常工作

javascript - 如何在执行 Ajax 请求大量数据库更新时实现进度条

javascript - 将 'keydown' 事件监听器添加到文档(输入字段除外)

javascript - 我如何在 DOM 中实现无限滚动

javascript - 使用 lodash 映射复杂的 JSON