JavaScript 引入了在不改变原始数组的情况下更改元素、排序、反转和拼接数组的强大功能,从而赋予其不变性。
即允许对数组进行操作时,不改变原数组,而返回一个原数组的拷贝。
搜索:《前端押题宝典》。字节、阿里内的前端大佬,联合推出的涵盖前端各个领域的高频面试题目。
with()
with(index, value)对应splice(index, 1, value),用来将指定位置的成员替换为新的值。
const arr = ["I", "B", "R", "A", "H", "I", "M"];
console.log(arr.with(2, "b")); // ["I", "B", "b", "A", "H", "I", "M"]
// replace the second index with the provided value "b"
console.log(arr); // ["I", "B", "R", "A", "H", "I", "M"];
toSorted()
toSorted()对应sort(),用来对数组成员排序。toSorted()方法返回一个全新的数组,并且该数组中的元素按升序排列。
const arr = ["I", "B", "R", "A", "H", "I", "M"];
console.log(arr.toSorted()); // ['A', 'B', 'H', 'I', 'I', 'M', 'R']
console.log(arr); // ["I", "B", "R", "A", "H", "I", "M"];
const numbers = [1, 10, 21, 2];
console.log(numbers.toSorted((a, b) => a - b)) //[1, 2, 10, 21]
toReversed()
toReversed()对应reverse(),返回一个新数组,其中元素的顺序相反。
const arr = ["I", "B", "R", "A", "H", "I", "M"];
console.log(arr.toReversed()); // ['M', 'I', 'H', 'A', 'R', 'B', 'I']
const numbers = [1, 10, 21, 2];
console.log(numbers.toReversed()) //[2, 21, 10, 1]
toSpliced()
toSpliced()对应splice(),用来在指定位置,删除指定数量的成员,并插入新成员。
const arr = ["I", "B", "R", "A", "H", "I", "M"];
console.log(arr.toSpliced(3, 3, "BAG")); // ['I', 'B', 'R', 'BAG', 'M']
const months = ["Jan", "Mar", "Apr", "May"];
console.log(months.toSpliced(1, 0, "Feb")) // ["Jan", "Feb", "Mar", "Apr", "May"]