首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在JavaScript中使用重复列表创建新列表的最快/推荐方法是什么?

在JavaScript中使用重复列表创建新列表的最快/推荐方法是什么?
EN

Stack Overflow用户
提问于 2013-10-17 05:33:23
回答 4查看 56关注 0票数 1

我的价值观自然是以这种形式出现的:

代码语言:javascript
复制
[1,2,3,4,5,6,7,8,9]

我是针对一个服务器api开发的,它需要一个输入参数,如:

代码语言:javascript
复制
[1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9]

有比简单的for循环更快或更多js风格的方法吗?

代码语言:javascript
复制
var f = function(values) {
    var newList = [];
    var i;
    for (i = 0; i < values.length; i++) {
         newList.push(values[i]);
         newList.push(values[i]);
    }
    return newList;
}
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-10-17 05:35:57

您可以通过组合它们来避免.push()调用,因为.push()是可变的。

代码语言:javascript
复制
 newList.push(values[i], values[i]);

除此之外,我怀疑你会变得更快。

票数 3
EN

Stack Overflow用户

发布于 2013-10-17 05:40:03

您可以使用each函数。

这会减少你的步子。

代码语言:javascript
复制
var list=[1,2,3,4,5,6,7,8,9]
var newlist=[];
$.each(list,function(index,data){newlist.push(data);newlist.push(data)})

希望这能有所帮助。

票数 1
EN

Stack Overflow用户

发布于 2013-10-17 05:53:50

尝试:[].concat.call([1,2,3,4,5,6,7,8,9],[1,2,3,4,5,6,7,8,9]).sort();

或者更一般的:

代码语言:javascript
复制
(function(){
   return this.concat(this).sort(function(a,b){return a-b;});}
).call([1,2,10,20,30,40,50,60,70,80,9]);

或者只是一个功能:

代码语言:javascript
复制
function(v) {
    var i = v.length, nw = [];
    while (i--) { nw.push(v[i],v[i]); }
    return nw.reverse();
}

或者使用map

代码语言:javascript
复制
var nw = ([1,2,3,4,5].map(function(a){this.push(a,a)},nw=[]),nw);

我怀疑这个功能是最有效的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19418960

复制
相关文章

相似问题

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