输入将是包含重复元素的列表,如下所示:
['30','10','10','20','20','30']
输出将是一个包含修改元素的列表,如下所示:
['30#1', '10#1', '10#2', '20#1', '20#2', '30#2']
#修饰符指示此元素出现在列表中的时间。
有人对此有想法吗?
发布于 2015-05-25 05:19:50
因此,您希望结果是一个数组,其中包含一个与原始数组中的每个项相对应的项。这是Array.prototype.map的工作。您希望对每个项目出现多少次保持一个运行计数,这可以通过一个简单的对象来完成。在每次迭代中,您都会查找项目出现的次数并添加一次。将该数字存储为新的计数,并使用它构建您的返回值。就像这样,或多或少:
var arr = ['30', '10', '10', '20', '20', '30'];
var counts = {};
var arr2 = arr.map(function(item) {
counts[item] = (counts[item] || 0) + 1;
return item + "#" + counts[item];
});你根本不需要洛达什。
发布于 2015-05-25 12:31:39
发布于 2015-05-25 05:17:04
示例:
var count = {};
['30','10','10','20','20','30'].map(function(current) {
count[current] ? count[current] +=1 : count[current] = 1;
return current + '#' + count[current];
})https://stackoverflow.com/questions/30431542
复制相似问题