Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

Bạn có thể sử dụng một số phương thức để xóa (các) mục khỏi một mảng:

//1
someArray.shift(); // first element removed
//2
someArray = someArray.slice(1); // first element removed
//3
someArray.splice(0, 1); // first element removed
//4
someArray.pop(); // last element removed
//5
someArray = someArray.slice(0, someArray.length - 1); // last element removed
//6
someArray.length = someArray.length - 1; // last element removed

Nếu bạn muốn xóa phần tử tại vị trí

**Results**

4, hãy sử dụng:

someArray.splice(x, 1);

Hoặc

someArray = someArray.slice(0, x).concat(someArray.slice(-x));

Trả lời nhận xét của @Chill182: Bạn có thể xóa một hoặc nhiều phần tử khỏi một mảng bằng cách sử dụng

**Results**

5 hoặc
**Results**

6 kết hợp với
**Results**

7 (xem MDN).MDN).

Xem dự án Stackblitz này hoặc đoạn trích bên dưới:

// non destructive filter > noJohn = John removed, but someArray will not change
let someArray = getArray();
let noJohn = someArray.filter( el => el.name !== "John" ); 
log(`let noJohn = someArray.filter( el => el.name !== "John")`,
  `non destructive filter [noJohn] =`, format(noJohn));
log(`**someArray.length ${someArray.length}`);

// destructive filter/reassign John removed > someArray2 =
let someArray2 = getArray();
someArray2 = someArray2.filter( el => el.name !== "John" );
log("", 
  `someArray2 = someArray2.filter( el => el.name !== "John" )`,
  `destructive filter/reassign John removed [someArray2] =`, 
  format(someArray2));
log(`**someArray2.length after filter ${someArray2.length}`);

// destructive splice /w findIndex Brian remains > someArray3 =
let someArray3 = getArray();
someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1);
someArray3.splice(someArray3.findIndex(v => v.name === "John"), 1);
log("",
  `someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1),`,
  `destructive splice /w findIndex Brian remains [someArray3] =`, 
  format(someArray3));
log(`**someArray3.length after splice ${someArray3.length}`);

// if you're not sure about the contents of your array, 
// you should check the results of findIndex first
let someArray4 = getArray();
const indx = someArray4.findIndex(v => v.name === "Michael");
someArray4.splice(indx, indx >= 0 ? 1 : 0);
log("", `someArray4.splice(indx, indx >= 0 ? 1 : 0)`,
  `check findIndex result first [someArray4] = (nothing is removed)`,
  format(someArray4));
log(`**someArray4.length (should still be 3) ${someArray4.length}`);

// -- helpers -- 
function format(obj) {
  return JSON.stringify(obj, null, " ");
}

function log(...txt) {
  document.querySelector("pre").textContent += `${txt.join("\n")}\n`
}

function getArray() {
  return [ {name: "Kristian", lines: "2,5,10"},
           {name: "John", lines: "1,19,26,96"},
           {name: "Brian", lines: "3,9,62,36"} ];
}
**Results**

Đã trả lời ngày 5 tháng 4 năm 2012 lúc 8:11Apr 5, 2012 at 8:11

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

KooiinckooiincKooiInc

Huy hiệu vàng 115K3131 gold badges141 silver badges176 bronze badges

8

Giải pháp sạch sẽ là sử dụng

**Results**

5:

var filtered = someArray.filter(function(el) { return el.Name != "Kristian"; }); 

Vấn đề với điều này là nó không hoạt động trên IE <9. Tuy nhiên, bạn có thể bao gồm mã từ thư viện JavaScript (ví dụ: UnderCore.js) thực hiện điều này cho bất kỳ trình duyệt nào.

Đã trả lời ngày 5 tháng 4 năm 2012 lúc 8:11Apr 5, 2012 at 8:11

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

KooiinckooiincJon

Huy hiệu vàng 115K3178 gold badges723 silver badges793 bronze badges

7

Giải pháp sạch sẽ là sử dụng

**Results**

5:

// lodash.js
someArray = _.reject(someArray, function(el) { return el.Name === "Kristian"; });

// sugar.js
someArray.remove(function(el) { return el.Name === "Kristian"; });

Vấn đề với điều này là nó không hoạt động trên IE <9. Tuy nhiên, bạn có thể bao gồm mã từ thư viện JavaScript (ví dụ: UnderCore.js) thực hiện điều này cho bất kỳ trình duyệt nào.

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

JonjonApr 5, 2012 at 8:14

419K78 Huy hiệu vàng723 Huy hiệu bạc793 Huy hiệu Đồngpsyho

Tôi khuyên bạn nên sử dụng lodash.js hoặc Sugar.js cho các nhiệm vụ phổ biến như thế này:5 gold badges22 silver badges23 bronze badges

9

ES2015

let someArray = [
               {name:"Kristian", lines:"2,5,10"},
               {name:"John", lines:"1,19,26,96"},
               {name:"Kristian", lines:"2,58,160"},
               {name:"Felix", lines:"1,19,26,96"}
            ];

someArray = someArray.filter(person => person.name != 'John');

Trong hầu hết các dự án, có một tập hợp các phương thức trợ giúp được cung cấp bởi các thư viện như thế này khá hữu ích.John!

Đã trả lời ngày 5 tháng 4 năm 2012 lúc 8:14Aug 8, 2017 at 18:50

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

PsyhopsyhoSaeid

7.0645 Huy hiệu vàng22 Huy hiệu bạc23 Huy hiệu đồng1 gold badge8 silver badges12 bronze badges

4

Nó sẽ loại bỏ John!

$.each(someArray, function(i){
    if(someArray[i].name === 'Kristian') {
        someArray.splice(i,1);
        return false;
    }
});

Đã trả lời ngày 8 tháng 8 năm 2017 lúc 18:50Apr 11, 2012 at 20:54

4

Saeidsaeid

someArray = [{name:"Kristian", lines:"2,5,10"}, {name:"John", lines:"1,19,26,96"}];

1.1491 Huy hiệu vàng8 Huy hiệu bạc12 Huy hiệu đồng

someArray.splice(x, 1);
0

Còn cái này thì sao?

someArray.splice(x, 1);
1

Đã trả lời ngày 11 tháng 4 năm 2012 lúc 20:54

someArray.splice(x, 1);
2

"Mảng" của bạn như được hiển thị là cú pháp JavaScript không hợp lệ. Dấu ngoặc xoăn

**Results**

9 dành cho các đối tượng có tên/cặp giá trị thuộc tính, nhưng dấu ngoặc vuông
var filtered = someArray.filter(function(el) { return el.Name != "Kristian"; }); 
0 dành cho các mảng - như SO:Apr 5, 2012 at 8:12

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

Trong trường hợp đó, bạn có thể sử dụng phương thức

var filtered = someArray.filter(function(el) { return el.Name != "Kristian"; }); 
1 để loại bỏ một mục. Để xóa mục đầu tiên (chỉ mục 0), giả sử:nnnnnn

Nếu bạn không biết chỉ mục nhưng muốn tìm kiếm qua mảng để tìm mục có tên "Kristian" để loại bỏ bạn có thể với điều này:29 gold badges193 silver badges234 bronze badges

4

Chỉnh sửa: Tôi chỉ nhận thấy câu hỏi của bạn được gắn thẻ "jQuery", vì vậy bạn có thể thử phương thức

var filtered = someArray.filter(function(el) { return el.Name != "Kristian"; }); 
2:

Đã trả lời ngày 5 tháng 4 năm 2012 lúc 8:12

someArray.splice(x, 1);
3

nnnnnnnnnnnn

someArray.splice(x, 1);
4

Badges vàng 145K29Apr 18, 2015 at 12:14

Bạn có thể sử dụng Array.Filter ().daCoda

ví dụ.4 gold badges31 silver badges34 bronze badges

3

Hàm mũi tên:

someArray.splice(x, 1);
5

Đã trả lời ngày 18 tháng 4 năm 2015 lúc 12:14

someArray.splice(x, 1);
6

DacodadacodaMay 7, 2013 at 4:01

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

3.2884 Huy hiệu vàng31 Huy hiệu bạc34 Huy hiệu đồngBishoy Hanna

Tôi đã tạo một hàm động lấy mảng, khóa và giá trị của đối tượng và trả về cùng một mảng sau khi xóa đối tượng mong muốn:2 gold badges33 silver badges32 bronze badges

0

Ví dụ đầy đủ: Bản demo

someArray.splice(x, 1);
7

Đã trả lời ngày 7 tháng 5 năm 2013 lúc 4:01Jul 18, 2014 at 15:50

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

Bishoy Hannabishoy Hannaggmendez

11.5k2 Huy hiệu vàng33 Huy hiệu bạc32 Huy hiệu Đồng5 silver badges18 bronze badges

0

Đây là một chức năng phù hợp với tôi:

someArray.splice(x, 1);
8

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

Đã trả lời ngày 18 tháng 7 năm 2014 lúc 15:50

GGMENDEZGGMENDEZ2 gold badges13 silver badges20 bronze badges

6035 Huy hiệu bạc18 Huy hiệu ĐồngJul 27, 2017 at 8:06

Bạn cũng có thể thử làm điều gì đó như thế này:Mikebarson

Ammar7 silver badges22 bronze badges

1

someArray.splice(x, 1);
9

1.0482 Huy hiệu vàng13 Huy hiệu bạc20 Huy hiệu ĐồngJul 26, 2013 at 18:00

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

0

someArray = someArray.slice(0, x).concat(someArray.slice(-x));
0

Đã trả lời ngày 27 tháng 7 năm 2017 lúc 8:06

someArray = someArray.slice(0, x).concat(someArray.slice(-x));
1

MikebarsonmiKebarson

someArray = someArray.slice(0, x).concat(someArray.slice(-x));
2

5327 Huy hiệu bạc22 Huy hiệu ĐồngAug 3, 2021 at 18:26

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

2

Đã trả lời ngày 26 tháng 7 năm 2013 lúc 18:00

someArray = someArray.slice(0, x).concat(someArray.slice(-x));
3

Chúng tôi nhận được chỉ mục của đối tượng có giá trị thuộc tính tên là "Kristian"Apr 5, 2012 at 8:10

Bằng cách sử dụng hàm splice, chúng tôi sẽ xóa đối tượng có giá trị thuộc tính tên là "Kristian"gabitzish

Đã trả lời ngày 3 tháng 8 năm 2021 lúc 18:266 gold badges43 silver badges65 bronze badges

Sử dụng chức năng splice trên mảng. Chỉ định vị trí của phần tử bắt đầu và độ dài của phần sau bạn muốn xóa.

Đã trả lời ngày 5 tháng 4 năm 2012 lúc 8:10

someArray = someArray.slice(0, x).concat(someArray.slice(-x));
4

GabitzishgabitzishMar 27, 2013 at 12:29

9.4496 Huy hiệu vàng43 Huy hiệu bạc65 Huy hiệu ĐồngJuliaCesar

Bỏ phiếu cho Undercorejs cho công việc đơn giản với các mảng.12 silver badges17 bronze badges

1

hàm _.without () giúp xóa một phần tử:

Đã trả lời ngày 27 tháng 3 năm 2013 lúc 12:29

JulaCesarjuliacesar

1.01912 Huy hiệu bạc17 Huy hiệu đồng

  • Màn biểu diễn
  • Hôm nay 2021.01.27 Tôi thực hiện các thử nghiệm trên MacOS Highsierra 10.13.6 trên Chrome V88, Safari V13.1.2 và Firefox V84 cho các giải pháp được chọn.
  • Kết quả
  • Đối với tất cả các trình duyệt:
  • Giải pháp nhanh nhất/nhanh nhất khi phần tử không tồn tại: A và B

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

Giải pháp nhanh nhất/nhanh nhất cho các mảng lớn: C

Giải pháp nhanh nhất/nhanh nhất cho các mảng lớn khi phần tử tồn tại: H

  • Giải pháp khá chậm cho các mảng nhỏ: F và G
  • Giải pháp khá chậm cho các mảng lớn: D, E và F
  • Thông tin chi tiết
  • Tôi thực hiện 4 trường hợp thử nghiệm:

Mảng nhỏ (10 phần tử) và phần tử tồn tại - bạn có thể chạy nó ở đây

Mảng nhỏ (10 phần tử) và phần tử không tồn tại - bạn có thể chạy nó ở đây

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

Mảng lớn (các yếu tố milion) và yếu tố tồn tại - bạn có thể chạy nó ở đâyJan 27, 2021 at 19:31

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

Mảng lớn (các yếu tố milion) và yếu tố không tồn tại - bạn có thể chạy nó ở đâyKamil Kiełczewski

Dưới đây đoạn trích xuất hiện sự khác biệt giữa các giải pháp a b c d e f g h i26 gold badges338 silver badges315 bronze badges

Và đây là những kết quả ví dụ cho Chrome

someArray = someArray.slice(0, x).concat(someArray.slice(-x));
5

Đã trả lời ngày 27 tháng 1 năm 2021 lúc 19:31

someArray = someArray.slice(0, x).concat(someArray.slice(-x));
6

Kamil Kiełczewskikamil KiełczewskiOct 3, 2020 at 21:42

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

1

76.4K26 Huy hiệu vàng338 Huy hiệu bạc315 Huy hiệu đồng

someArray = someArray.slice(0, x).concat(someArray.slice(-x));
7

Đây là một ví dụ với bản đồ và mối nốiNov 29, 2017 at 14:30

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

Đầu raSiddhartha

Đã trả lời ngày 3 tháng 10 năm 2020 lúc 21:4212 silver badges10 bronze badges

Mặc dù điều này có lẽ không phù hợp với tình huống này, tôi đã phát hiện ra vào một ngày khác rằng bạn cũng có thể sử dụng từ khóa

var filtered = someArray.filter(function(el) { return el.Name != "Kristian"; }); 
3 để loại bỏ một mục khỏi một mảng nếu bạn không cần thay đổi kích thước của mảng, ví dụ:

someArray = someArray.slice(0, x).concat(someArray.slice(-x));
8

Đã trả lời ngày 5 tháng 4 năm 2012 lúc 8:40Apr 5, 2012 at 8:40

Dougajmcdonalddougajmcdonalddougajmcdonald

18,5K11 Huy hiệu vàng53 Huy hiệu bạc89 Huy hiệu đồng11 gold badges53 silver badges89 bronze badges

Giải pháp đơn giản nhất sẽ là tạo một bản đồ lưu trữ các chỉ mục cho từng đối tượng theo tên, như thế này:

someArray = someArray.slice(0, x).concat(someArray.slice(-x));
9

Đã trả lời ngày 5 tháng 4 năm 2012 lúc 8:12Apr 5, 2012 at 8:12

CREYNDERSCREYNDERSCreynders

4.54319 Huy hiệu bạc21 Huy hiệu đồng19 silver badges21 bronze badges

1

Bạn cũng có thể sử dụng chức năng bản đồ.map function also.

// non destructive filter > noJohn = John removed, but someArray will not change
let someArray = getArray();
let noJohn = someArray.filter( el => el.name !== "John" ); 
log(`let noJohn = someArray.filter( el => el.name !== "John")`,
  `non destructive filter [noJohn] =`, format(noJohn));
log(`**someArray.length ${someArray.length}`);

// destructive filter/reassign John removed > someArray2 =
let someArray2 = getArray();
someArray2 = someArray2.filter( el => el.name !== "John" );
log("", 
  `someArray2 = someArray2.filter( el => el.name !== "John" )`,
  `destructive filter/reassign John removed [someArray2] =`, 
  format(someArray2));
log(`**someArray2.length after filter ${someArray2.length}`);

// destructive splice /w findIndex Brian remains > someArray3 =
let someArray3 = getArray();
someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1);
someArray3.splice(someArray3.findIndex(v => v.name === "John"), 1);
log("",
  `someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1),`,
  `destructive splice /w findIndex Brian remains [someArray3] =`, 
  format(someArray3));
log(`**someArray3.length after splice ${someArray3.length}`);

// if you're not sure about the contents of your array, 
// you should check the results of findIndex first
let someArray4 = getArray();
const indx = someArray4.findIndex(v => v.name === "Michael");
someArray4.splice(indx, indx >= 0 ? 1 : 0);
log("", `someArray4.splice(indx, indx >= 0 ? 1 : 0)`,
  `check findIndex result first [someArray4] = (nothing is removed)`,
  format(someArray4));
log(`**someArray4.length (should still be 3) ${someArray4.length}`);

// -- helpers -- 
function format(obj) {
  return JSON.stringify(obj, null, " ");
}

function log(...txt) {
  document.querySelector("pre").textContent += `${txt.join("\n")}\n`
}

function getArray() {
  return [ {name: "Kristian", lines: "2,5,10"},
           {name: "John", lines: "1,19,26,96"},
           {name: "Brian", lines: "3,9,62,36"} ];
}
0

Đã trả lời ngày 5 tháng 3 năm 2017 lúc 9:48Mar 5, 2017 at 9:48

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

solanki...solanki...solanki...

4.6022 Huy hiệu vàng24 Huy hiệu bạc29 Huy hiệu đồng2 gold badges24 silver badges29 bronze badges

2

Nếu bạn muốn xóa tất cả các lần xuất hiện của một đối tượng đã cho (dựa trên một số điều kiện) thì hãy sử dụng phương thức mối nối JavaScript bên trong A cho vòng lặp.

Vì việc loại bỏ một đối tượng sẽ ảnh hưởng đến độ dài mảng, hãy đảm bảo giảm một bước, để kiểm tra độ dài đó vẫn còn nguyên vẹn.

// non destructive filter > noJohn = John removed, but someArray will not change
let someArray = getArray();
let noJohn = someArray.filter( el => el.name !== "John" ); 
log(`let noJohn = someArray.filter( el => el.name !== "John")`,
  `non destructive filter [noJohn] =`, format(noJohn));
log(`**someArray.length ${someArray.length}`);

// destructive filter/reassign John removed > someArray2 =
let someArray2 = getArray();
someArray2 = someArray2.filter( el => el.name !== "John" );
log("", 
  `someArray2 = someArray2.filter( el => el.name !== "John" )`,
  `destructive filter/reassign John removed [someArray2] =`, 
  format(someArray2));
log(`**someArray2.length after filter ${someArray2.length}`);

// destructive splice /w findIndex Brian remains > someArray3 =
let someArray3 = getArray();
someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1);
someArray3.splice(someArray3.findIndex(v => v.name === "John"), 1);
log("",
  `someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1),`,
  `destructive splice /w findIndex Brian remains [someArray3] =`, 
  format(someArray3));
log(`**someArray3.length after splice ${someArray3.length}`);

// if you're not sure about the contents of your array, 
// you should check the results of findIndex first
let someArray4 = getArray();
const indx = someArray4.findIndex(v => v.name === "Michael");
someArray4.splice(indx, indx >= 0 ? 1 : 0);
log("", `someArray4.splice(indx, indx >= 0 ? 1 : 0)`,
  `check findIndex result first [someArray4] = (nothing is removed)`,
  format(someArray4));
log(`**someArray4.length (should still be 3) ${someArray4.length}`);

// -- helpers -- 
function format(obj) {
  return JSON.stringify(obj, null, " ");
}

function log(...txt) {
  document.querySelector("pre").textContent += `${txt.join("\n")}\n`
}

function getArray() {
  return [ {name: "Kristian", lines: "2,5,10"},
           {name: "John", lines: "1,19,26,96"},
           {name: "Brian", lines: "3,9,62,36"} ];
}
1

Đoạn mã ở trên loại bỏ tất cả các đối tượng có tuổi lớn hơn 20.

Ksugiarto

9301 Huy hiệu vàng19 Huy hiệu bạc38 Huy hiệu đồng1 gold badge19 silver badges38 bronze badges

Đã trả lời ngày 15 tháng 6 năm 2018 lúc 20:10Jun 15, 2018 at 20:10

ObaidobaidObaid

2.49515 huy hiệu bạc14 Huy hiệu đồng15 silver badges14 bronze badges

Câu trả lời này

// non destructive filter > noJohn = John removed, but someArray will not change
let someArray = getArray();
let noJohn = someArray.filter( el => el.name !== "John" ); 
log(`let noJohn = someArray.filter( el => el.name !== "John")`,
  `non destructive filter [noJohn] =`, format(noJohn));
log(`**someArray.length ${someArray.length}`);

// destructive filter/reassign John removed > someArray2 =
let someArray2 = getArray();
someArray2 = someArray2.filter( el => el.name !== "John" );
log("", 
  `someArray2 = someArray2.filter( el => el.name !== "John" )`,
  `destructive filter/reassign John removed [someArray2] =`, 
  format(someArray2));
log(`**someArray2.length after filter ${someArray2.length}`);

// destructive splice /w findIndex Brian remains > someArray3 =
let someArray3 = getArray();
someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1);
someArray3.splice(someArray3.findIndex(v => v.name === "John"), 1);
log("",
  `someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1),`,
  `destructive splice /w findIndex Brian remains [someArray3] =`, 
  format(someArray3));
log(`**someArray3.length after splice ${someArray3.length}`);

// if you're not sure about the contents of your array, 
// you should check the results of findIndex first
let someArray4 = getArray();
const indx = someArray4.findIndex(v => v.name === "Michael");
someArray4.splice(indx, indx >= 0 ? 1 : 0);
log("", `someArray4.splice(indx, indx >= 0 ? 1 : 0)`,
  `check findIndex result first [someArray4] = (nothing is removed)`,
  format(someArray4));
log(`**someArray4.length (should still be 3) ${someArray4.length}`);

// -- helpers -- 
function format(obj) {
  return JSON.stringify(obj, null, " ");
}

function log(...txt) {
  document.querySelector("pre").textContent += `${txt.join("\n")}\n`
}

function getArray() {
  return [ {name: "Kristian", lines: "2,5,10"},
           {name: "John", lines: "1,19,26,96"},
           {name: "Brian", lines: "3,9,62,36"} ];
}
2

không làm việc cho nhiều hồ sơ đáp ứng điều kiện. Nếu bạn có hai hồ sơ liên tiếp như vậy, chỉ có hồ sơ đầu tiên bị xóa và bản khác đã bỏ qua. Bạn phải sử dụng:

// non destructive filter > noJohn = John removed, but someArray will not change
let someArray = getArray();
let noJohn = someArray.filter( el => el.name !== "John" ); 
log(`let noJohn = someArray.filter( el => el.name !== "John")`,
  `non destructive filter [noJohn] =`, format(noJohn));
log(`**someArray.length ${someArray.length}`);

// destructive filter/reassign John removed > someArray2 =
let someArray2 = getArray();
someArray2 = someArray2.filter( el => el.name !== "John" );
log("", 
  `someArray2 = someArray2.filter( el => el.name !== "John" )`,
  `destructive filter/reassign John removed [someArray2] =`, 
  format(someArray2));
log(`**someArray2.length after filter ${someArray2.length}`);

// destructive splice /w findIndex Brian remains > someArray3 =
let someArray3 = getArray();
someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1);
someArray3.splice(someArray3.findIndex(v => v.name === "John"), 1);
log("",
  `someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1),`,
  `destructive splice /w findIndex Brian remains [someArray3] =`, 
  format(someArray3));
log(`**someArray3.length after splice ${someArray3.length}`);

// if you're not sure about the contents of your array, 
// you should check the results of findIndex first
let someArray4 = getArray();
const indx = someArray4.findIndex(v => v.name === "Michael");
someArray4.splice(indx, indx >= 0 ? 1 : 0);
log("", `someArray4.splice(indx, indx >= 0 ? 1 : 0)`,
  `check findIndex result first [someArray4] = (nothing is removed)`,
  format(someArray4));
log(`**someArray4.length (should still be 3) ${someArray4.length}`);

// -- helpers -- 
function format(obj) {
  return JSON.stringify(obj, null, " ");
}

function log(...txt) {
  document.querySelector("pre").textContent += `${txt.join("\n")}\n`
}

function getArray() {
  return [ {name: "Kristian", lines: "2,5,10"},
           {name: "John", lines: "1,19,26,96"},
           {name: "Brian", lines: "3,9,62,36"} ];
}
3

thay vì .

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

Shiv Kumar

8961 Huy hiệu vàng9 Huy hiệu bạc 20 Huy hiệu Đồng1 gold badge9 silver badges20 bronze badges

Đã trả lời ngày 27 tháng 7 năm 2018 lúc 9:48Jul 27, 2018 at 9:48

JarmopjarmopJarmoP

1812 Huy hiệu bạc3 Huy hiệu đồng2 silver badges3 bronze badges

Dường như có một lỗi trong cú pháp mảng của bạn, vì vậy giả sử bạn có nghĩa là một mảng trái ngược với một đối tượng, mảng.splice là bạn của bạn ở đây:

// non destructive filter > noJohn = John removed, but someArray will not change
let someArray = getArray();
let noJohn = someArray.filter( el => el.name !== "John" ); 
log(`let noJohn = someArray.filter( el => el.name !== "John")`,
  `non destructive filter [noJohn] =`, format(noJohn));
log(`**someArray.length ${someArray.length}`);

// destructive filter/reassign John removed > someArray2 =
let someArray2 = getArray();
someArray2 = someArray2.filter( el => el.name !== "John" );
log("", 
  `someArray2 = someArray2.filter( el => el.name !== "John" )`,
  `destructive filter/reassign John removed [someArray2] =`, 
  format(someArray2));
log(`**someArray2.length after filter ${someArray2.length}`);

// destructive splice /w findIndex Brian remains > someArray3 =
let someArray3 = getArray();
someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1);
someArray3.splice(someArray3.findIndex(v => v.name === "John"), 1);
log("",
  `someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1),`,
  `destructive splice /w findIndex Brian remains [someArray3] =`, 
  format(someArray3));
log(`**someArray3.length after splice ${someArray3.length}`);

// if you're not sure about the contents of your array, 
// you should check the results of findIndex first
let someArray4 = getArray();
const indx = someArray4.findIndex(v => v.name === "Michael");
someArray4.splice(indx, indx >= 0 ? 1 : 0);
log("", `someArray4.splice(indx, indx >= 0 ? 1 : 0)`,
  `check findIndex result first [someArray4] = (nothing is removed)`,
  format(someArray4));
log(`**someArray4.length (should still be 3) ${someArray4.length}`);

// -- helpers -- 
function format(obj) {
  return JSON.stringify(obj, null, " ");
}

function log(...txt) {
  document.querySelector("pre").textContent += `${txt.join("\n")}\n`
}

function getArray() {
  return [ {name: "Kristian", lines: "2,5,10"},
           {name: "John", lines: "1,19,26,96"},
           {name: "Brian", lines: "3,9,62,36"} ];
}
4

Đã trả lời ngày 5 tháng 4 năm 2012 lúc 8:13Apr 5, 2012 at 8:13

Khăn quàng cổ SimonSimon Scarfe

9.1504 Huy hiệu vàng27 Huy hiệu bạc32 Huy hiệu Đồng4 gold badges27 silver badges32 bronze badges

Bạn cũng có thể sử dụng

var filtered = someArray.filter(function(el) { return el.Name != "Kristian"; }); 
4:

// non destructive filter > noJohn = John removed, but someArray will not change
let someArray = getArray();
let noJohn = someArray.filter( el => el.name !== "John" ); 
log(`let noJohn = someArray.filter( el => el.name !== "John")`,
  `non destructive filter [noJohn] =`, format(noJohn));
log(`**someArray.length ${someArray.length}`);

// destructive filter/reassign John removed > someArray2 =
let someArray2 = getArray();
someArray2 = someArray2.filter( el => el.name !== "John" );
log("", 
  `someArray2 = someArray2.filter( el => el.name !== "John" )`,
  `destructive filter/reassign John removed [someArray2] =`, 
  format(someArray2));
log(`**someArray2.length after filter ${someArray2.length}`);

// destructive splice /w findIndex Brian remains > someArray3 =
let someArray3 = getArray();
someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1);
someArray3.splice(someArray3.findIndex(v => v.name === "John"), 1);
log("",
  `someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1),`,
  `destructive splice /w findIndex Brian remains [someArray3] =`, 
  format(someArray3));
log(`**someArray3.length after splice ${someArray3.length}`);

// if you're not sure about the contents of your array, 
// you should check the results of findIndex first
let someArray4 = getArray();
const indx = someArray4.findIndex(v => v.name === "Michael");
someArray4.splice(indx, indx >= 0 ? 1 : 0);
log("", `someArray4.splice(indx, indx >= 0 ? 1 : 0)`,
  `check findIndex result first [someArray4] = (nothing is removed)`,
  format(someArray4));
log(`**someArray4.length (should still be 3) ${someArray4.length}`);

// -- helpers -- 
function format(obj) {
  return JSON.stringify(obj, null, " ");
}

function log(...txt) {
  document.querySelector("pre").textContent += `${txt.join("\n")}\n`
}

function getArray() {
  return [ {name: "Kristian", lines: "2,5,10"},
           {name: "John", lines: "1,19,26,96"},
           {name: "Brian", lines: "3,9,62,36"} ];
}
5

Đã trả lời ngày 6 tháng 7 năm 2017 lúc 18:59Jul 6, 2017 at 18:59

Artur Grigioartur GrigioArtur Grigio

4.8597 Huy hiệu vàng40 Huy hiệu bạc62 Huy hiệu Đồng7 gold badges40 silver badges62 bronze badges

Đây là những gì tôi sử dụng.

// non destructive filter > noJohn = John removed, but someArray will not change
let someArray = getArray();
let noJohn = someArray.filter( el => el.name !== "John" ); 
log(`let noJohn = someArray.filter( el => el.name !== "John")`,
  `non destructive filter [noJohn] =`, format(noJohn));
log(`**someArray.length ${someArray.length}`);

// destructive filter/reassign John removed > someArray2 =
let someArray2 = getArray();
someArray2 = someArray2.filter( el => el.name !== "John" );
log("", 
  `someArray2 = someArray2.filter( el => el.name !== "John" )`,
  `destructive filter/reassign John removed [someArray2] =`, 
  format(someArray2));
log(`**someArray2.length after filter ${someArray2.length}`);

// destructive splice /w findIndex Brian remains > someArray3 =
let someArray3 = getArray();
someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1);
someArray3.splice(someArray3.findIndex(v => v.name === "John"), 1);
log("",
  `someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1),`,
  `destructive splice /w findIndex Brian remains [someArray3] =`, 
  format(someArray3));
log(`**someArray3.length after splice ${someArray3.length}`);

// if you're not sure about the contents of your array, 
// you should check the results of findIndex first
let someArray4 = getArray();
const indx = someArray4.findIndex(v => v.name === "Michael");
someArray4.splice(indx, indx >= 0 ? 1 : 0);
log("", `someArray4.splice(indx, indx >= 0 ? 1 : 0)`,
  `check findIndex result first [someArray4] = (nothing is removed)`,
  format(someArray4));
log(`**someArray4.length (should still be 3) ${someArray4.length}`);

// -- helpers -- 
function format(obj) {
  return JSON.stringify(obj, null, " ");
}

function log(...txt) {
  document.querySelector("pre").textContent += `${txt.join("\n")}\n`
}

function getArray() {
  return [ {name: "Kristian", lines: "2,5,10"},
           {name: "John", lines: "1,19,26,96"},
           {name: "Brian", lines: "3,9,62,36"} ];
}
6

Sau đó, nó đơn giản như nói

// non destructive filter > noJohn = John removed, but someArray will not change
let someArray = getArray();
let noJohn = someArray.filter( el => el.name !== "John" ); 
log(`let noJohn = someArray.filter( el => el.name !== "John")`,
  `non destructive filter [noJohn] =`, format(noJohn));
log(`**someArray.length ${someArray.length}`);

// destructive filter/reassign John removed > someArray2 =
let someArray2 = getArray();
someArray2 = someArray2.filter( el => el.name !== "John" );
log("", 
  `someArray2 = someArray2.filter( el => el.name !== "John" )`,
  `destructive filter/reassign John removed [someArray2] =`, 
  format(someArray2));
log(`**someArray2.length after filter ${someArray2.length}`);

// destructive splice /w findIndex Brian remains > someArray3 =
let someArray3 = getArray();
someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1);
someArray3.splice(someArray3.findIndex(v => v.name === "John"), 1);
log("",
  `someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1),`,
  `destructive splice /w findIndex Brian remains [someArray3] =`, 
  format(someArray3));
log(`**someArray3.length after splice ${someArray3.length}`);

// if you're not sure about the contents of your array, 
// you should check the results of findIndex first
let someArray4 = getArray();
const indx = someArray4.findIndex(v => v.name === "Michael");
someArray4.splice(indx, indx >= 0 ? 1 : 0);
log("", `someArray4.splice(indx, indx >= 0 ? 1 : 0)`,
  `check findIndex result first [someArray4] = (nothing is removed)`,
  format(someArray4));
log(`**someArray4.length (should still be 3) ${someArray4.length}`);

// -- helpers -- 
function format(obj) {
  return JSON.stringify(obj, null, " ");
}

function log(...txt) {
  document.querySelector("pre").textContent += `${txt.join("\n")}\n`
}

function getArray() {
  return [ {name: "Kristian", lines: "2,5,10"},
           {name: "John", lines: "1,19,26,96"},
           {name: "Brian", lines: "3,9,62,36"} ];
}
7

Thay thế bất kỳ số nào thay cho ba. Sau khi đầu ra dự kiến ​​là:

// non destructive filter > noJohn = John removed, but someArray will not change
let someArray = getArray();
let noJohn = someArray.filter( el => el.name !== "John" ); 
log(`let noJohn = someArray.filter( el => el.name !== "John")`,
  `non destructive filter [noJohn] =`, format(noJohn));
log(`**someArray.length ${someArray.length}`);

// destructive filter/reassign John removed > someArray2 =
let someArray2 = getArray();
someArray2 = someArray2.filter( el => el.name !== "John" );
log("", 
  `someArray2 = someArray2.filter( el => el.name !== "John" )`,
  `destructive filter/reassign John removed [someArray2] =`, 
  format(someArray2));
log(`**someArray2.length after filter ${someArray2.length}`);

// destructive splice /w findIndex Brian remains > someArray3 =
let someArray3 = getArray();
someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1);
someArray3.splice(someArray3.findIndex(v => v.name === "John"), 1);
log("",
  `someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1),`,
  `destructive splice /w findIndex Brian remains [someArray3] =`, 
  format(someArray3));
log(`**someArray3.length after splice ${someArray3.length}`);

// if you're not sure about the contents of your array, 
// you should check the results of findIndex first
let someArray4 = getArray();
const indx = someArray4.findIndex(v => v.name === "Michael");
someArray4.splice(indx, indx >= 0 ? 1 : 0);
log("", `someArray4.splice(indx, indx >= 0 ? 1 : 0)`,
  `check findIndex result first [someArray4] = (nothing is removed)`,
  format(someArray4));
log(`**someArray4.length (should still be 3) ${someArray4.length}`);

// -- helpers -- 
function format(obj) {
  return JSON.stringify(obj, null, " ");
}

function log(...txt) {
  document.querySelector("pre").textContent += `${txt.join("\n")}\n`
}

function getArray() {
  return [ {name: "Kristian", lines: "2,5,10"},
           {name: "John", lines: "1,19,26,96"},
           {name: "Brian", lines: "3,9,62,36"} ];
}
8

Đã trả lời ngày 5 tháng 4 năm 2018 lúc 0:03Apr 5, 2018 at 0:03

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

Matthias Smatthias sMatthias S

1851 Huy hiệu bạc7 Huy hiệu đồng1 silver badge7 bronze badges

1

Tôi đoán các câu trả lời rất phân nhánh và thắt nút.

Bạn có thể sử dụng đường dẫn sau để xóa một đối tượng mảng phù hợp với đối tượng được đưa ra trong biệt ngữ JavaScript hiện đại.

// non destructive filter > noJohn = John removed, but someArray will not change
let someArray = getArray();
let noJohn = someArray.filter( el => el.name !== "John" ); 
log(`let noJohn = someArray.filter( el => el.name !== "John")`,
  `non destructive filter [noJohn] =`, format(noJohn));
log(`**someArray.length ${someArray.length}`);

// destructive filter/reassign John removed > someArray2 =
let someArray2 = getArray();
someArray2 = someArray2.filter( el => el.name !== "John" );
log("", 
  `someArray2 = someArray2.filter( el => el.name !== "John" )`,
  `destructive filter/reassign John removed [someArray2] =`, 
  format(someArray2));
log(`**someArray2.length after filter ${someArray2.length}`);

// destructive splice /w findIndex Brian remains > someArray3 =
let someArray3 = getArray();
someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1);
someArray3.splice(someArray3.findIndex(v => v.name === "John"), 1);
log("",
  `someArray3.splice(someArray3.findIndex(v => v.name === "Kristian"), 1),`,
  `destructive splice /w findIndex Brian remains [someArray3] =`, 
  format(someArray3));
log(`**someArray3.length after splice ${someArray3.length}`);

// if you're not sure about the contents of your array, 
// you should check the results of findIndex first
let someArray4 = getArray();
const indx = someArray4.findIndex(v => v.name === "Michael");
someArray4.splice(indx, indx >= 0 ? 1 : 0);
log("", `someArray4.splice(indx, indx >= 0 ? 1 : 0)`,
  `check findIndex result first [someArray4] = (nothing is removed)`,
  format(someArray4));
log(`**someArray4.length (should still be 3) ${someArray4.length}`);

// -- helpers -- 
function format(obj) {
  return JSON.stringify(obj, null, " ");
}

function log(...txt) {
  document.querySelector("pre").textContent += `${txt.join("\n")}\n`
}

function getArray() {
  return [ {name: "Kristian", lines: "2,5,10"},
           {name: "John", lines: "1,19,26,96"},
           {name: "Brian", lines: "3,9,62,36"} ];
}
9

Đã trả lời ngày 10 tháng 6 năm 2020 lúc 6:40Jun 10, 2020 at 6:40

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

Splice (i, 1) trong đó tôi là chỉ số gia tăng của mảng sẽ loại bỏ đối tượng. Nhưng hãy nhớ rằng Splice cũng sẽ đặt lại độ dài mảng, vì vậy hãy coi chừng 'không xác định'. Sử dụng ví dụ của bạn, nếu bạn xóa 'Kristian', thì trong lần thực hiện tiếp theo trong vòng lặp, tôi sẽ là 2 nhưng một số điều sẽ là chiều dài 1, do đó nếu bạn cố gắng xóa "John" bạn sẽ nhận được lỗi "không xác định" . Một giải pháp cho điều này mặc dù không thanh lịch là có bộ đếm riêng để theo dõi chỉ số của phần tử sẽ được gỡ bỏ.

Đã trả lời ngày 9 tháng 10 năm 2014 lúc 23:45Oct 9, 2014 at 23:45

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

MaksoodmaksoodMaksood

1.13014 Huy hiệu bạc19 Huy hiệu đồng14 silver badges19 bronze badges

Trả về chỉ các đối tượng từ mảng có tài sản

var filtered = someArray.filter(function(el) { return el.Name != "Kristian"; }); 
5 không phải là "Kristian"

**Results**

0

Demo:

**Results**

1
**Results**

2

Đã trả lời ngày 9 tháng 2 năm 2017 lúc 18:42Feb 9, 2017 at 18:42

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

LegendslegendsLegends

Huy hiệu vàng 19.8K1212 gold badges91 silver badges120 bronze badges

Khái niệm này sử dụng Kendo Grid

**Results**

3

Đã trả lời ngày 4 tháng 8 năm 2017 lúc 11:48Aug 4, 2017 at 11:48

Hướng dẫn how do i remove an object from an array with javascript? - làm cách nào để xóa một đối tượng khỏi một mảng bằng javascript?

Làm thế nào để bạn xóa một đối tượng khỏi một mảng?

Có nhiều phương pháp và kỹ thuật khác nhau bạn có thể sử dụng để loại bỏ các phần tử khỏi các mảng JavaScript:..
Pop - Xóa từ cuối một mảng ..
SHIFT - Xóa từ đầu một mảng ..
Splice - Xóa khỏi một chỉ mục mảng cụ thể ..
Bộ lọc - Cho phép bạn lập trình loại bỏ các phần tử khỏi một mảng ..

Làm thế nào để bạn loại bỏ một đối tượng khỏi một mảng mảng?

Để xóa một đối tượng khỏi một mảng, hãy sử dụng phương thức mảng.pop (). Mảng. Hàm pop () xóa phần tử cuối cùng và trả về phần tử đó.use the array. pop() method. The array. pop() function deletes the last element and returns that element.

Làm thế nào để bạn loại bỏ một phần tử khỏi một mảng trong JavaScript?

Các phần tử mảng có thể bị xóa bằng cách sử dụng xóa toán tử JavaScript.Sử dụng xóa các lỗ không xác định trong mảng.Sử dụng pop () hoặc thay đổi () thay thế.using the JavaScript operator delete . Using delete leaves undefined holes in the array. Use pop() or shift() instead.

Làm cách nào để loại bỏ một đối tượng khỏi một mảng bằng ID?

Để xóa một phần tử khỏi một mảng bằng ID trong JavaScript, hãy sử dụng phương thức FindIndex () để tìm chỉ mục của đối tượng với ID trong mảng.Sau đó gọi phương thức splice () trên mảng, chuyển chỉ mục này và 1 là đối số để xóa đối tượng khỏi mảng.