6.4. Array function Slice & Splice - quan1997ap/angular-app-note GitHub Wiki

1.So sánh slice & splice

1.1. slice

Syntax

  array.slice(from, until)

from: Chí số của phần tử bắt đầu được chọn để cắt. Tính từ 0

until: Chỉ số của phần tử được cắt đến .

Ex

let array = [
  {a: 1, b: 1},
  {a: 2, b: 2},
  {a: 3, b: 3},
  {a: 4, b: 4}
]

// lấy phần tử cuối
let sliceArr = array.slice(0, 4);
console.log(array, sliceArr, array === sliceArr)

// thay đổi giá trị xem mảng cũ có bị đổi không
sliceArr[0].a = 'change';
console.log(array, sliceArr);

// so sánh 2 mảng
console.log(array === sliceArr)

image

1.2 splice

Syntax

Cách 1: Xóa phần tử

array.splice(index, number of elements);

index: chỉ số của phần tử đầu tiên được cắt **number **of elements: số lượng phần tử sẽ bị cắt đi.

Cách 2: Thêm phần tử

  array.splice(index, howmany, item1, ....., itemX)

index: Vị trí bắt đầu được thêm vào

howmany: Số lượng phần tử bị xóa

item1, ..., itemX: Các phần tử có thể được thêm vào

let array = [
  {a: 1, b: 1},
  {a: 2, b: 2},
  {a: 3, b: 3},
  {a: 4, b: 4}
]

// lấy phần tử cuối
let spliceArr = array.splice(0, 4);
console.log(array, spliceArr, array === spliceArr)

// thay đổi giá trị xem mảng cũ có bị đổi không
spliceArr[0].a = 'change';
console.log(array, spliceArr);

// so sánh 2 mảng
console.log(array === spliceArr)

image

Kết luận

Slice

  • Slice dùng để tạo 1 mảng từ mảng cũ.

  • Các phần tử trong mảng type object. Thì các phần tử này vẫn reference với nhau( nghĩa là khi thay đổi 1 trong 2 thì phần tử còn lại cũng đổi )

  • Khi dùng slice thì mảng cũ sẽ không bị ảnh hưởng về số lượng. Tuy nhiên các phần tử type object vẫn reference với nhau

Splice

  • Slice dùng để tạo 1 mảng từ mảng cũ. Nếu các phần tử trong mảng type object.

  • Slice dùng để cắt, thêm mới phần tử.

  • Khi dùng splice thì mảng cũ sẽ bị ảnh hưởng về số lượng. Các phần tử type object vẫn reference với nhau( như Slice )

=> Giống: Các phần tử trong mảng type object vẫn reference với nhau

Khác slice không làm thay đổi số lượng phần tử của mảng cũ. Splice thì có