Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Loại bỏ số âm khỏi mảng chỉ dùng pop() trong JavaScript

Mô tả bài toán

Xóa tất cả số âm khỏi mảng, chỉ được dùng pop(), không tạo mảng tạm.

Ví dụ minh họa

// strip all negatives off the end
while (x.length && x[x.length - 1] < 0) {
  x.pop();
}
for (var i = x.length - 1; i >= 0; i--) {
  if (x[i] < 0) {
    x[i] = x[x.length - 1];
    x.pop();
  }
}

Kết quả

[ 1, 8, 9 ]

Giải thích thuật toán

  1. Xóa số âm ở cuối mảng bằng pop()
  2. Duyệt ngược: nếu gặp số âm, ghi đè bằng phần tử cuối (đã biết là dương), pop() bỏ phần tử cuối

Lưu ý

Thứ tự các số dương không bị bảo toàn. Cách này O(n) time, O(1) space, nhưng destructive.

Cách thực tế

const filtered = arr.filter(x => x >= 0);