[英]Replace an item at a specific index with vs without mutation
最近我遇到了這兩種解決方案來替換數組中特定索引處的項目,但我想知道哪個更好,為什么?
function replace(array, index, item) {
const newArray = [...array];
newArray[index] = item;
return newArray;
}
function replace(array, index, item) {
return [
...array.slice(0, index),
item,
...array.slice(index + 1)
];
}
這兩個函數的作用完全相同。 它們都不會修改原始數組(沒有突變),唯一的區別是第一個在修改指定索引之前簡單地淺克隆數組,第二個淺克隆指定索引之前的所有項目,在指定索引處插入新值和淺克隆rest 的項目。
第一個 function 更好,因為它的速度提高了 33%,因為它在第二個 function 中進行了 2 步修改,而 3 步進行了修改。
如果突變不是問題,可以使用更快的 function:
function replace(array, index, item) {
return array[index] = item;
}
“更好”可以是主觀的。 您可以考慮幾個因素。 其中一些:
您還可以將此版本添加到可能的實現列表中,這更像是第一個版本:
function replace(array, index, item) {
return Object.assign([], array, { [index]: item });
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.