01/10/2018, 14:12

Javascript: mảng bị thay đổi không như mong muốn qua hàm

//Mình muốn viết 1 hàm splice: 
function splice(array, start, deleteCount) {
     var returnArray = [];
     while(deleteCount != 0) {
         returnArray[returnArray.length] = array[start]; // gán array[start] vào returnArray
         delete array[start]; 
         array = Object.values(array); // xoá empty/undefined element trong array sau delete
         deleteCount--;
    }
    console.log(array) // [1,2]
    return returnArray;
}
var array = [1,2,3,4]
splice(array,2,2);
console.log(array); // [1, 2, empty, 4];

array trong hàm splice là [1,2] nhưng array ngoài hàm thì hiện [1,2, empty,4]. Mình không biết taị sao ai giải thích với, cảm ơn

viết 16:23 ngày 01/10/2018

bạn return array hay return returnArray?

Đào An viết 16:14 ngày 01/10/2018

Thấy cái này có hàm sẵn mà ??

MDN Web Docs

Array.prototype.splice()

The splice() method changes the contents of an array by removing existing elements and/or adding new elements.

Tên Gì Cũng Được viết 16:19 ngày 01/10/2018

Cách 1
array = splice(array,2,2);
Cách 2: JavaScript không có pass by reference nên phải pass cho nó 1 cái object
var param = {
array: array,
start: 2,
deleteCount: 2
}
splice(param );
Tất nhiên là cũng sửa hàm splice lại rồi
Có lẽ còn 1 cách nữa, viết prototype

Bài liên quan
0