我最近已经习惯了将函数调用链接起来的想法,这让我的生活变得更轻松。但JavaScript的内置数组函数看起来似乎不太合作。
如何让unshift
或splice
分别返回已修改的数组而不是数组和已删除项目的长度?我假设通过对call
或apply
进行一些棘手的调用,可以解决这个问题。
我不得不离开我的方式并使用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));
答案 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]
除了不良做法和你应该避免它。相反,您可以使用唯一名称创建自己的原型方法并使用它。