有没有办法将多个Array方法应用于一行中的数组?

DR0*_*01D 7 javascript arrays

在下面的简单测试代码中,我push将数字10放入一个数组中,然后将splice'hello world'放入第二个索引的数组中.它按预期工作.

"use strict";

let myArray = [1, 2, 3, 4, 5];

myArray.push(10);
myArray.splice(2, 0, 'hello world');

console.log(myArray);
Run Code Online (Sandbox Code Playgroud)

但是有可能在一条线上做到这一点吗?我尝试在下面的示例链接,它会抛出一个错误.我找不到有人在网上谈论这个.

"use strict";

let myArray = [1, 2, 3, 4, 5];

myArray.push(10).splice(2, 0, 'hello world');

console.log(myArray);
Run Code Online (Sandbox Code Playgroud)

Fra*_*sco 9

是的,可以在一行中完成.

"use strict";

let myArray = [1, 2, 3, 4, 5];

myArray.push(10); myArray.splice(2, 0, 'hello world');

console.log(myArray);
Run Code Online (Sandbox Code Playgroud)

但是你为什么要一行呢?如果您的担忧是可读性,我会坚持两行.如果您希望它更具功能性,那么请使用功能库

编辑

我同意其他人对可连接性的看法.我只是想说明一点

  • 我喜欢你的想法:) (3认同)

Her*_*key 2

如果您使用的是现代 JavaScript 浏览器,则使用数组扩展语法push会更容易一些。由于其他人都在使用链接(这需要更改内置的 Array 对象,我不喜欢),所以我将使用不同的东西:

"use strict";

let myArray = [1, 2, 3, 4, 5];

function notSplice(array, start, end, ...items) {
  array.splice.apply(array, [start, end, ...items]);
  return array;
}

myArray = notSplice([...myArray, 10], 2, 0, 'hello world');

console.log(myArray);
Run Code Online (Sandbox Code Playgroud)

  • 需要明确的是,这不会在一行中执行操作:它在 5 行中执行,因为 `notSplice` 需要 4 行。我完全同意 [Franceso 在他的回答中提出的观点](https://stackoverflow.com/ a/50728486)。 (2认同)