make splice或unshift返回修改后的数组

时间:2015-01-15 12:01:07

标签: javascript function

我最近已经习惯了将函数调用链接起来的想法,这让我的生活变得更轻松。但JavaScript的内置数组函数看起来似乎不太合作。

如何让unshiftsplice分别返回已修改的数组而不是数组和已删除项目的长度?我假设通过对callapply进行一些棘手的调用,可以解决这个问题。

我不得不离开我的方式并使用concat作为我的用例,有更好的方法吗?

Eg: 
 a = [2,3,4,5]
 one solution : somethingElse([1].concat(a))
 I wanted to do something like:  somethingElse(a.unshift(1));
 or may be like this: somethingElse(a.splice(0,0,1));

2 个答案:

答案 0 :(得分:5)

使用圆括号分组,f.e。切片后返回修改后的数组:

var a = [2,3,4,5];
somethingElse((a.splice(0,0,1), a));

答案 1 :(得分:3)

一种可能的方法是以下列方式覆盖原始prototype方法:

var unshift = Array.prototype.unshift;
Array.prototype.unshift = function() {
    unshift.apply(this, arguments);
    return this;
};

[1, 2, 3].unshift(0);  // [0, 1, 2, 3]

除了不良做法你应该避免它。相反,您可以使用唯一名称创建自己的原型方法并使用它。