.slice()数组中的第二个元素



我的数组:

var arr= ["1", "2", "3","4","5", "6", "7","8","9","10","11"];

我想.slice((这样输出将是:

var finalArr = [ "1", "2", "4", "5", "6","9","10","11"];

我使用了类似的slice,但是我怎么能从数组中选择第二个元素.slice((呢?

var b = [].concat(arr.slice(0, 6), arr.slice(-3)); // output: ["1", "2", "3", "4", "5", "6", "9", "10", "11"]

我知道.splice((,但该解决方案不适用于我的项目

我想这是切片中正确的"end"值的问题。

const initial = ["1", "2", "3","4", "5", "6", "7", "8", "9", "10", "11"];
const finalArr = [ "1", "2", "4", "5", "6", "9", "10", "11"];
// concat the slices
const concatted = initial.slice(0, 2)
.concat(initial.slice(3, 6))
.concat(initial.slice(-3));
// or use the spread operator ...
const spreaded = [
...initial.slice(0, 2), 
...initial.slice(3, 6), 
...initial.slice(-3) ];
// or flat three sliced subarrays
const flattened = [
initial.slice(0, 2), 
initial.slice(3, 6), 
initial.slice(-3) ].flat();

// or filter all values NOT in finalArr
const notInFinalArray = initial.filter(v => !finalArr.find(fa => fa === v));
const filtered = initial.filter( v => !notInFinalArray.includes(v) );
console.log(`concatted ${JSON.stringify(concatted)} equals finalArr? ${
JSON.stringify(concatted) === JSON.stringify(finalArr)}`);
console.log(`spreaded ${JSON.stringify(spreaded)} equals finalArr? ${
JSON.stringify(spreaded) === JSON.stringify(finalArr)}`);
console.log(`flattened ${JSON.stringify(flattened)} equals finalArr? ${
JSON.stringify(flattened) === JSON.stringify(finalArr)}`);
console.log(`filtered ${JSON.stringify(filtered)} equals finalArr? ${
JSON.stringify(filtered) === JSON.stringify(finalArr)}`);

您可以使用ES6排列运算符:

const result = [arr[0], ...arr.slice(2)];

或者,您甚至可以像这样使用Array.prototype.filter,但如果您有大的源阵列,请注意性能:

const result = arr.filter((_, index) => index !== 1);

在您的案例中,您可以使用"推";而不是concat,更具性能:

const arr = ["1", "2", "3","4", "5", "6", "7", "8", "9", "10", "11"];
// concat the slices
var finalArr = arr.slice(0, 2);
finalArr.push(...arr.slice(3, 6),...arr.slice(-3));
console.log(`${JSON.stringify(finalArr)}`);

相关内容

最新更新