总结串的JavaScript数组(Summarizing a javascript array of

2019-10-16 21:22发布

我有一个包含龙与地下城类名的JavaScript字符串声明的可变长度阵列。 这样的一个例子是如下所示:

var class_names = new Array("Wizard", "Wizard", "Wizard", "Sorcerer", 
    "Sorcerer", "Ultimate Magus");

在我的HTML,我使用JavaScript window.onload函数从JavaScript文件中设置各种变量建立在本地显示的页面内容。

对于像名字,这很容易:

document.getElementById('charname').innerHTML = name[0];

但对于类信息,我不希望只是泵出的类名的大规模串,我想它凝聚了下来。 使用示例“class_names”上面,我想用一个看起来像这样的字符串结束:

“精灵3,巫师2,终极新空气1”

即,每个类名称后的数字应阵列中发现的重复的次数。

任何人有一个想法如何做到这一点上的苍蝇,所以当我更改JavaScript文件,以更多的类数据添加到class_names,适当地显示我的HTML网页上?

在此先感谢您的帮助,我得到这个宠物项目(即创建广告活动中的每一个字符,可以打印出一个字符表HTML页面....这远远超过手工编写一个页面的每个字符更好,或手写它香草片材)。

Answer 1:

这是很容易,只需通过数组循环和计数重复。

var l = class_names.length, i, tmp = {}, ret = [];
for( i=0; i<l; i++) {
    if( !tmp[class_names[i]]) tmp[class_names[i]] = 0;
    tmp[class_names[i]]++;
}
for( i in tmp) {
    if( tmp.hasOwnProperty(i)) {
        ret.push(i+" "+tmp[i]);
    }
}
// output is ret.join(", ");


Answer 2:

我认为有许多办法来解决你的问题...

何以可能的:

  1. 如果你不知道的类出现在正确的顺序,尝试先解决你的阵列,以确保它们被正确分组。
  2. 遍历数组和计数的重复,即增加你的计数器,如果是以lastElement === class_names [i]和追加结果最后类名到结果字符串,并设置计数器回到否则为1。

可能性B:直接存储你的阵列作为[“向导”,3“巫师”,2,...] - 这是可能的,因为JS不需要阵列包含相同类型的元件中的每一个位置。

可能性C:使用不同的结构,例如,使用对象:VAR = class_names [{名: “向导”,级别:3},{名称: “巫师”,等级:2},...]



文章来源: Summarizing a javascript array of strings