javascript remove element from array dành cho những người trưởng thành!

Nội dung bài viết

Video học lập trình mỗi ngày

Trong javascript có nhiều cách javascript remove element from array. Có nhiều cách ta đã biết từ lâu, nhưng cũng nên học thêm những cách khác như, remove item in array javascript es6, hay remove object in array javascript, hoặc có thể remove element from array by index or value. Nếu chúng ta biết trước index or value.

Bài viết này nằm trong 40 bài viết về thủ thuật viết code javascript các bạn có thể ghé qua.

javascript remove element from array

Trước tiên chúng ta lướt qua một số method cơ bản của một array, để có thể remove item in array một cách nhanh chóng. Hỗ trợ cực mạnh, hà cớ gì tại sao lại không dùng đến. Đầu tiên chúng ta đi qua một số method cơ bản nhất khi sử dụng array. Đương nhiên bạn có thể bỏ qua phần cơ bản này, nếu như bạn là người hay sử dụng về Array().

Array.shift()

Sử dụng Array.shift() remove item đầu tiên của một array

  let array = [1, 2, 3, 4]; 
  array.shift();

  // Output:
  [2, 3, 4]

Array.pop()

Sử dụng Array.pop() remove item cuối của một array.

  let array = [1, 2, 3, 4]; 
  array.pop();

  Output:
  [1, 2, 3]

Notes: Cả hai phương thứcpop()shift() đều return về giá trị đã bị xoá

2 - Javascript remove element from array by index

Nếu bạn sử dụng trường hợp này thì chắc chắn chúng ta đã biết index trong array hay biết position i trong một array. Splice array javascript cung cấp một method array.splice() để giải quyết việc này. và chúng ta cũng có thể hiểu index là key hoặc javascript remove element from array by key

Giả sử bạn có một array và bạn biết xoá positioni = 2

  var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
  var removed = arr.splice(2, 1); // với i = 2 thì bạn đang xoá ở trị thứ index = 2

  //Output
  removed === [3] // Element đã xoá
  arr === [1, 2, 4, 5, 6, 7, 8, 9, 0] //Sau khi xoá xong

or bạn có thể xoá nhiều items

  //xoá ở i = 2 và tham số tuỳ chọn để xoá đến đâu 
  var removed = arr.splice(2, 2)

  //Output
  removed === [3, 4]
  arr === [1, 2, 5, 6, 7, 8, 9, 0]

CHÚ Ý: Khi bạn sử dụng _arr.splice(2, 2) có nghĩa là xoá ở i = 2 và tham số tuỳ chọn để xoá đến đâu là 2. Nếu tham số thứ 2 bỏ quên thì nó sẽ xoá hết items, trừ kể từ vị trí của tham số thứ nhất. Hay xem ví dụ sau đây để hiểu rõ hơn.

  var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0];
  var removed = arr.splice(2);

  // Output
  removed === [3, 4, 5, 6, 7, 8, 9, 0]
  arr === [1, 2]

The splice() cũng có thể add thêm item nữa, chứ không đơn thuần là chỉ remove item array using splice trong javascript. Nếu đến đây là bạn phải suy nghĩa, lướt đi lướt lại tốt hơn hết tôi nghĩ bạn nên tham khảo thêm về splice(), ngoài ra còn có split(), hay slice().

Nên đọc thêm: Cách sử dụng splice, split và slice trong javascsipt, tránh sự nhầm lẫn.

3 - Javascript remove element from array by value

Trên ví dụ đó là bắt buộc chúng ta phải biết được index của một Array. Vậy nếu như không biết index mà chỉ biết value thì chúng ta phải làm như thế nào để remove một element.

Để sử dụng trường hợp này, bắt buộc bạn phải biết mình remove value nào trong array, cũng giống như mình biết được index nào trong Array().

Giả sử bạn muốn remove value = 4 trong array cho trước, như ví dụ dưới đây. Nhưng theo tôi đây là cách lâu rồi, và thời nay họ ít khi sử dụng nữa.

  function removeElement(array, elem) {
      var index = array.indexOf(elem);
      if (index > -1) {
          array.splice(index, 1);
      }
  }
  var arr = [1, 2, 3, 4, 5]
  removeElement(arr, 4);
  console.log(arr);

  // Output:
  //  [1, 2, 3, 5]

Đó là cách truyền thống, vậy cách hiện đại được triển khai như thế nào thì chúng ta sẽ sử dụng những phương thức của ES6 đã giới thiệu.

4 - Remove item in array javascript es6

Những bạn nào mà đã sử dụng ES6 một thời gian rồi thì có thể sử dụng 1 trong 10 methods array mà bất cứ lập trình viên nào cũng phải biết đó là method array.filter().

Bạn có thể xem ví dụ dưới đây rồi đối chiếu với cách truyền thống xem hiệu quả như thế nào?

remove a item in array

  const items = [1, 2, 3, 4, 5]
  const valueToRemove = 4
  const filteredItems = items.filter(item => item !== valueToRemove)

  //  Output:
  [1, 2, 3, 5]

Ngoài việc sử dụng array.filter() để xoá 1 phần tử trong array thì bạn có thể xoá nhiều phần tử trong array - remove multiple item in array javascript cũng sử dụng method đó.

  const items = [1, 2, 3, 4, 5]
  const valuesToRemove = [3, 4]
  const filteredItems = items.filter(item => !valuesToRemove.includes(item))
  console.log(filteredItems)

  //  Output:
   [1, 2, 5]

Đương nhiên sẽ có nhiều cách viết gắn gọn hơn ví dụ trên, tôi cũng để cao 9 mẹo hữu ích để viết JavaScript ngắn gọn và hiệu quả hơn trong bài viết đó. Nó giúp tôi nâng cao tay nghề nhiều hơn trước khi đi vào con đường trở thành kiến trúc sư

5 - Lodash remove item in array

Nhắc đến việc sử dụng lodash thì có nhiều luồng tranh cãi, là Có lên sử dụng lodash không?Theo quan điểm của tôi, và tôi cũng đã nói lên quan điểm của mình trong bài Trường hợp nào nên sử dụng lodash. Ở đó có nhiều phân tích được đúc kết từ kinh nghiệm của tôi.

Nếu bạn nào quen sử dụng lodash để tiện cho việc lập trình thì có thể sử dụng cách sau:

remove item using lodash

  var arr = [1, 2, 3, 3, 4, 5];
  _.remove(arr, function(e) {
      return e === 3;
  });
  console.log(arr);

  // Output:
  [ 1, 2, 4, 5 ]

Ngoài ra chúng ta cũng có thể sử dụng lodash để Xoá một phần tử trong một Object

remove item in object javascript

   var people = [
      {name: 'Billy', age: 22},
      {name: 'Sally', age: 19},
      {name: 'Timmy', age: 29},
      {name: 'Tammy', age: 15}
  ]
  _.remove(people, function(e) {
      return [e.age](e.age) < 21
  })
  console.log(people);

  // Output
  // [ { name: 'Billy', age: 22 }, { name: 'Timmy', age: 29 } ]

Cũng có thể dùng es6 filter() để giải quyết remove object in array javascript

  var people = [
      {name: 'Billy', age: 22},
      {name: 'Sally', age: 19},
      {name: 'Timmy', age: 29},
      {name: 'Tammy', age: 15}
  ]

  people = people.filter(function(returnableObjects){
       return [returnableObjects.age](returnableObjects.age) < 21
  });

  console.log(people)

  // Output
  // [ { name: 'Billy', age: 22 }, { name: 'Timmy', age: 29 } ]

6 - javascript remove element from array in foreach

Cũng tương tự như loop for vậy, chúng ta lại sử dụng splice() để giải quyết:

  var arr = [1, 2, 3, 4, 5];

  arr.forEach(function(index, value){
     if(arr[index] === 4){
        arr.splice(index, 1);
     }
  });

  console.log(arr)
  // Output
  [1, 2, 3, 5]

Tóm lại

Trên đây là những cách mà bạn có thể javascript remove element from array khi bạn gặp phải. Và tôi khuyên bạn, nên sử dụng những gì mà javascript cung cấp, không nên lạm dụng những thư viện như lodash để remove item mà mà phải kéo về thư viện lodash chỉ để dùng cho một việc nhỏ như thế. Hy vọng có thể giúp các bạn hiểu rõ và dễ so sánh với nhau những cách trên làm sao cho hiệu quả và phù hợp với dự án của mình.

Thanks for reading

Series - Con đường trở thành kiến trúc sư

Có thể bạn đã bị missing