寻找javascript技术
我正在尝试学习一些新鲜的javascript技术,为了达到这一目的,我模拟了一个函数:寻找javascript技术,javascript,Javascript,我正在尝试学习一些新鲜的javascript技术,为了达到这一目的,我模拟了一个函数: function doAction(index) { for(var a = Array.prototype.slice.call(arguments, 1), i = 0, r = [], l = a.length; i < l; i++) r.push(a[i][index]); return r; } doAction(2, ['a',
function doAction(index) {
for(var a = Array.prototype.slice.call(arguments, 1),
i = 0, r = [], l = a.length; i < l; i++)
r.push(a[i][index]);
return r;
}
doAction(2, ['a','b','c'],['a','b','c'],['a','b','c']) //==> ["c", "c", "c"]
我认为没有太多需要优化的地方,但我会做两个改变
- 首先,声明一个真正的参数,而不是使用一些不在这里的参数
- 其次,我将变量初始化放在for之外
function doAction(index,a) {
var r = [], l = a.length;
for(var i=0; i < l; i++) r.push(a[i][index]);
return r;
}
函数doAction(索引,a){
var r=[],l=a.长度;
对于(var i=0;i
调用将是
doAction(2,['a','b','c'],['a','b','c'],['a','b','c'])代码>可以这样简化,因为不需要复制参数数组。它只需要复制,需要修改:
function doAction(index) {
var r = [];
for(var i = 1; i < arguments.length; i++) r.push(arguments[i][index]);
return r;
}
函数执行(索引){
var r=[];
对于(var i=1;i
或者,如果要保留len变量,可以是:
function doAction(index) {
var r = [];
for(var i = 1, len = arguments.length; i < len; i++) r.push(arguments[i][index]);
return r;
}
函数执行(索引){
var r=[];
对于(var i=1,len=arguments.length;i
这里的jsFiddle:
至于名称,您可以称它为multiSlice()
或multiIndex()
它是一个mapIndex函数,我想我以前听说过它叫“列切片”。但是,它也是一个更通用的.map()
方法的具体实现--@IAbstractDownvoteFactory感谢您注意到我的愚蠢:)
function doAction(index) {
var r = [];
for(var i = 1, len = arguments.length; i < len; i++) r.push(arguments[i][index]);
return r;
}