为 Lodash.js 中的重复元素添加修饰符?
Add modifiers to duplicate elements in Lodash.js?
输入将是一个包含重复元素的列表,如下所示:
['30','10','10','20','20','30']
并且输出将是一个包含如下修改元素的列表:
['30#1', '10#1', '10#2', '20#1', '20#2', '30#2']
修饰符#
表示该元素出现在列表中的时间..
有人对此有想法吗?
示例:
var count = {};
['30','10','10','20','20','30'].map(function(current) {
count[current] ? count[current] +=1 : count[current] = 1;
return current + '#' + count[current];
})
所以您希望结果是一个数组,其中的一项对应于原始数组中的每一项。这是 Array.prototype.map
的工作。您想要对每个项目出现的次数进行 运行 计数,您可以使用一个简单的对象来做到这一点。在每次迭代中,您都会查找该项目出现的次数并添加一次。将该数字存储为新计数并使用它来构建您的 return 值。大致是这样的:
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];
});
你根本不需要 Lodash。
这是一个使用 lodash 的例子。
_.map(coll, function(item) {
return item + '#' +
_.set(this, item, _.get(this, item, 0) + 1)[item];
}, {});
好处是您不需要在此处设置临时变量来计算结果。我们的想法是将它们存储在 this
- 传递给 map().
的空对象中
设置 属性 值的 get() function provides you with the 0 default if the property doesn't exist. So this can be used directly with set() 和 returns 对象。
输入将是一个包含重复元素的列表,如下所示:
['30','10','10','20','20','30']
并且输出将是一个包含如下修改元素的列表:
['30#1', '10#1', '10#2', '20#1', '20#2', '30#2']
修饰符#
表示该元素出现在列表中的时间..
有人对此有想法吗?
示例:
var count = {};
['30','10','10','20','20','30'].map(function(current) {
count[current] ? count[current] +=1 : count[current] = 1;
return current + '#' + count[current];
})
所以您希望结果是一个数组,其中的一项对应于原始数组中的每一项。这是 Array.prototype.map
的工作。您想要对每个项目出现的次数进行 运行 计数,您可以使用一个简单的对象来做到这一点。在每次迭代中,您都会查找该项目出现的次数并添加一次。将该数字存储为新计数并使用它来构建您的 return 值。大致是这样的:
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];
});
你根本不需要 Lodash。
这是一个使用 lodash 的例子。
_.map(coll, function(item) {
return item + '#' +
_.set(this, item, _.get(this, item, 0) + 1)[item];
}, {});
好处是您不需要在此处设置临时变量来计算结果。我们的想法是将它们存储在 this
- 传递给 map().
设置 属性 值的 get() function provides you with the 0 default if the property doesn't exist. So this can be used directly with set() 和 returns 对象。