如何计算数组中的项目,如开发人员控制台

时间:2016-09-22 15:00:23

标签: javascript arrays

脚本:

vL1 = ["AB", "AB", "AB", "AB", "AB", "CS", "CS", "CS", "ND", "ND"];
vL2 = ["1",  "1",  "1",  "2",  "3",  "1",  "1",  "2",  "1",  "1"];

for(var i = 0; i < vL1.length; i++){
    thing = vL1[i] + " " + vL2[i];
    console.log(thing);
}

当我查看开发者控制台时,我看到以下内容:

(3) AB 1
    AB 2
    AB 3
(2) CS 1
    CS 2
(2) ND 1

如何修改脚本以便我可以获得AB 1出现的次数,或CS 1出现在我的代码中以便在其他代码中使用功能

我只想知道vL2中表示的每个vL1的计数。关联vL1非常重要,因为这样可以识别vL2,因为它不是唯一的。

3 个答案:

答案 0 :(得分:2)

你也可以这样做;

&#13;
&#13;
var vL1 = ["AB", "AB", "AB", "AB", "AB", "CS", "CS", "CS", "ND", "ND"],
    vL2 = ["1",  "1",  "1",  "2",  "3",  "1",  "1",  "2",  "1",  "1"],
 result = vL1.reduce((p,c,i) => p[c] ? (p[c][vL2[i]] = p[c][vL2[i]] ? ++p[c][vL2[i]]
                                                                    : 1, p)
                                     : (p[c] = {[vL2[i]]: 1}, p), {});
console.log(result);
&#13;
&#13;
&#13;

答案 1 :(得分:1)

var obj={};
function log(a){
 if(obj[a]){
  obj[a]++;
 }else{
  obj[a]=0;
 }
 }

然后做:

log(thing);

在你的for循环中,而不是:

console.log(obj);

Obj现在包含: AB1:3; ....

答案 2 :(得分:1)

您可以将计数存储在对象中。此外,使用Array.prototype.reduce可以使索引更简单(例如,您不必手动处理递增索引等):

mainloop()