Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 计算对象中同一个键内的多个唯一值_Javascript_Ajax_Fetch - Fatal编程技术网

Javascript 计算对象中同一个键内的多个唯一值

Javascript 计算对象中同一个键内的多个唯一值,javascript,ajax,fetch,Javascript,Ajax,Fetch,我试图跟踪四个特定字符串值在同一个键中显示的次数 问题是,我很难添加多个计数器。第一个计数器工作并跟踪第一个条件,但if/else语句中的下一个条件会阻止初始条件和此后的每个条件正确相加。数据来自包含多个URL的Promise.all 这是我的密码: const urls = [ 'https://api.github.com/users/TylerP33/repos?page=1', 'https://api.github.com/users/TylerP33/repos?page=2

我试图跟踪四个特定字符串值在同一个键中显示的次数

问题是,我很难添加多个计数器。第一个计数器工作并跟踪第一个条件,但if/else语句中的下一个条件会阻止初始条件和此后的每个条件正确相加。数据来自包含多个URL的
Promise.all

这是我的密码:

const urls = [
  'https://api.github.com/users/TylerP33/repos?page=1',
  'https://api.github.com/users/TylerP33/repos?page=2',
  'https://api.github.com/users/TylerP33/repos?page=3',
  'https://api.github.com/users/TylerP33/repos?page=4',
  'https://api.github.com/users/TylerP33/repos?page=5',
  'https://api.github.com/users/TylerP33/repos?page=6',
  'https://api.github.com/users/TylerP33/repos?page=7',
  'https://api.github.com/users/TylerP33/repos?page=8',
  'https://api.github.com/users/TylerP33/repos?page=9',
  'https://api.github.com/users/TylerP33/repos?page=10',
  'https://api.github.com/users/TylerP33/repos?page=11',
  'https://api.github.com/users/TylerP33/repos?page=12'
]


function getLanguages() {
  return Promise.all(urls.map(url =>
    fetch(`${url}`)
    .then(response => response.json())
    .then(obj => obj.forEach(function(val) {
      var rubyCounter = 0
      var cssCounter = 0
      var htmlCounter = 0
      var jsCounter = 0
      if (val.language === "Ruby") {
        rubyCounter++;
        console.log(rubyCounter);
      }

    })))
  )
}

getLanguages();
rubyCounter
将返回
235
,这是正确的数量,但是如果我添加更多的条件,就像通过同一个键运行的真/假条件会抛出所有内容一样。我可能错过了一些引人注目的东西,但我很想知道你们的想法


提前感谢。

对于此代码,如果记录,rubyCounter将始终为
1
,因为这些计数器始终在calllback中初始化

您需要将这些计数器的数据初始化移到
getLanguages
的根目录下

对于每个计数器,我不使用多变量,而是使用一个对象,对于每种要计数的语言,都有一个属性

const URL=[
'https://api.github.com/users/TylerP33/repos?page=1',
'https://api.github.com/users/TylerP33/repos?page=2',
'https://api.github.com/users/TylerP33/repos?page=3',
'https://api.github.com/users/TylerP33/repos?page=4',
'https://api.github.com/users/TylerP33/repos?page=5',
'https://api.github.com/users/TylerP33/repos?page=6',
'https://api.github.com/users/TylerP33/repos?page=7',
'https://api.github.com/users/TylerP33/repos?page=8',
'https://api.github.com/users/TylerP33/repos?page=9',
'https://api.github.com/users/TylerP33/repos?page=10',
'https://api.github.com/users/TylerP33/repos?page=11',
'https://api.github.com/users/TylerP33/repos?page=12'
]
函数getLanguages(){
让计数器={
鲁比:0,
html:0
}
返回Promise.all(url.map)(url=>
获取(`${url}`)
.then(response=>response.json())
.then(obj=>obj.forEach(函数(val)){
/*var rubyCounter=0
var CSSCHONTER=0
var htmlCounter=0
var jsCounter=0*/
如果(val.language==“Ruby”){
counter.ruby++;
}else if(val.language==“HTML”){
counter.html++;
}
}))))
.然后(()=>{
控制台目录(计数器)
})
}

getLanguages()如果记录此代码,则rubyCounter
将始终为
1
,因为这些计数器始终在Callback中初始化

您需要将这些计数器的数据初始化移到
getLanguages
的根目录下

对于每个计数器,我不使用多变量,而是使用一个对象,对于每种要计数的语言,都有一个属性

const URL=[
'https://api.github.com/users/TylerP33/repos?page=1',
'https://api.github.com/users/TylerP33/repos?page=2',
'https://api.github.com/users/TylerP33/repos?page=3',
'https://api.github.com/users/TylerP33/repos?page=4',
'https://api.github.com/users/TylerP33/repos?page=5',
'https://api.github.com/users/TylerP33/repos?page=6',
'https://api.github.com/users/TylerP33/repos?page=7',
'https://api.github.com/users/TylerP33/repos?page=8',
'https://api.github.com/users/TylerP33/repos?page=9',
'https://api.github.com/users/TylerP33/repos?page=10',
'https://api.github.com/users/TylerP33/repos?page=11',
'https://api.github.com/users/TylerP33/repos?page=12'
]
函数getLanguages(){
让计数器={
鲁比:0,
html:0
}
返回Promise.all(url.map)(url=>
获取(`${url}`)
.then(response=>response.json())
.then(obj=>obj.forEach(函数(val)){
/*var rubyCounter=0
var CSSCHONTER=0
var htmlCounter=0
var jsCounter=0*/
如果(val.language==“Ruby”){
counter.ruby++;
}else if(val.language==“HTML”){
counter.html++;
}
}))))
.然后(()=>{
控制台目录(计数器)
})
}

getLanguages()请检查这是否适用于您:

const urls = [
            'https://api.github.com/users/TylerP33/repos?page=1',
            'https://api.github.com/users/TylerP33/repos?page=2'
        ]

        var counters = {};
        function getLanguages() {
            return Promise.all(urls.map(url => {
                fetch(`${url}`)
                    .then(response => response.json())
                    .then(json => json.forEach(function (val) {
                        if (!counters[val.language])
                            counters[val.language] = 0;

                        counters[val.language]++;

                    }))
                    .then(() => {
                        console.log(counters);
                    });
            }));
        }

        getLanguages();

请检查这是否适用于您:

const urls = [
            'https://api.github.com/users/TylerP33/repos?page=1',
            'https://api.github.com/users/TylerP33/repos?page=2'
        ]

        var counters = {};
        function getLanguages() {
            return Promise.all(urls.map(url => {
                fetch(`${url}`)
                    .then(response => response.json())
                    .then(json => json.forEach(function (val) {
                        if (!counters[val.language])
                            counters[val.language] = 0;

                        counters[val.language]++;

                    }))
                    .then(() => {
                        console.log(counters);
                    });
            }));
        }

        getLanguages();

response.json()
获得的结果不是json。调用该函数将响应的数据解释为JSON,对其进行解析并返回一个JavaScript对象。JSON是一种基于字符串的数据表示形式,在遍历、迭代器。。。它。对于此代码,
rubyCounter
如果被记录,将始终是
1
。从
response.json()
得到的结果不是json。调用该函数将响应的数据解释为JSON,对其进行解析并返回一个JavaScript对象。JSON是一种基于字符串的数据表示形式,在遍历、迭代器。。。它。对于此代码
rubyCounter
如果被记录,它将始终是
1
。执行得非常漂亮!工作得很有魅力!非常感谢。制作精美!工作得很有魅力!非常感谢。这真是太棒了!非常感谢!我甚至不知道这是可能的:D.两个答案都很有效,所以我不确定谁得到了复选标记…:/这真是太棒了!非常感谢!我甚至不知道这是可能的:D.两个答案都很有效,所以我不确定谁得到了复选标记…:/