首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Lodash.js中添加修饰符复制元素?

在Lodash.js中添加修饰符复制元素?
EN

Stack Overflow用户
提问于 2015-05-25 05:05:51
回答 3查看 65关注 0票数 0

输入将是包含重复元素的列表,如下所示:

['30','10','10','20','20','30']

输出将是一个包含修改元素的列表,如下所示:

['30#1', '10#1', '10#2', '20#1', '20#2', '30#2']

#修饰符指示此元素出现在列表中的时间。

有人对此有想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-25 05:19:50

因此,您希望结果是一个数组,其中包含一个与原始数组中的每个项相对应的项。这是Array.prototype.map的工作。您希望对每个项目出现多少次保持一个运行计数,这可以通过一个简单的对象来完成。在每次迭代中,您都会查找项目出现的次数并添加一次。将该数字存储为新的计数,并使用它构建您的返回值。就像这样,或多或少:

代码语言:javascript
复制
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];
});

你根本不需要洛达什。

票数 2
EN

Stack Overflow用户

发布于 2015-05-25 12:31:39

下面是一个使用的例子。

代码语言:javascript
复制
_.map(coll, function(item) {
    return item + '#' +
        _.set(this, item, _.get(this, item, 0) + 1)[item];
}, {});

更好的是,您不需要在这里设置临时变量来计算结果。其想法是将它们存储在this中--传递给地图()的空对象。

如果属性不存在,得到()函数将为您提供0默认值。因此,这可以直接与set()一起使用,后者设置属性值并返回对象。

票数 1
EN

Stack Overflow用户

发布于 2015-05-25 05:17:04

示例:

代码语言:javascript
复制
var count = {};
['30','10','10','20','20','30'].map(function(current) {
    count[current] ? count[current] +=1 : count[current] = 1;
    return current + '#' + count[current];
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30431542

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档