Hướng dẫn remove object in array javascript - loại bỏ đối tượng trong mả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í

<pre>
**Results**

</pre>
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

<pre>
**Results**

</pre>
5 hoặc
<pre>
**Results**

</pre>
6 kết hợp với
<pre>
**Results**

</pre>
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"} ];
}
<pre>
**Results**

</pre>

Đã 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 remove object in array javascript - loại bỏ đối tượng trong mả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

<pre>
**Results**

</pre>
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 remove object in array javascript - loại bỏ đối tượng trong mả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

<pre>
**Results**

</pre>
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 remove object in array javascript - loại bỏ đối tượng trong mả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 remove object in array javascript - loại bỏ đối tượng trong mảng javascript

PsyhopsyhoSaeid

7.0625 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

<pre>
**Results**

</pre>
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 remove object in array javascript - loại bỏ đối tượng trong mả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 badges235 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 badges35 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 remove object in array javascript - loại bỏ đối tượng trong mảng javascript

3.2974 Huy hiệu vàng31 Huy hiệu bạc35 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 remove object in array javascript - loại bỏ đối tượng trong mả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 remove object in array javascript - loại bỏ đối tượng trong mả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

6015 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 Đồng

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

MikebarsonmiKebarsonAug 3, 2021 at 18:26

Hướng dẫn remove object in array javascript - loại bỏ đối tượng trong mảng javascript

2

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

5327 Huy hiệu bạc22 Huy hiệu ĐồngJul 26, 2013 at 18:00

Hướng dẫn remove object in array javascript - loại bỏ đối tượng trong mảng javascript

0

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"

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

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"Apr 5, 2012 at 8:10

Đã trả lời ngày 3 tháng 8 năm 2021 lúc 18:26gabitzish

Đã trả lời ngày 26 tháng 7 năm 2013 lúc 18:006 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 remove object in array javascript - loại bỏ đối tượng trong mả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 remove object in array javascript - loại bỏ đối tượng trong mả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 remove object in array javascript - loại bỏ đối tượng trong mả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 badges339 silver badges318 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 remove object in array javascript - loại bỏ đối tượng trong mảng javascript

1

76.9K26 Huy hiệu vàng339 Huy hiệu bạc318 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 remove object in array javascript - loại bỏ đối tượng trong mả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

Phim huy hiệu vàng 18.6K1154 Huy hiệu bạc89 Huy hiệu đồng11 gold badges54 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 remove object in array javascript - loại bỏ đối tượng trong mảng javascript

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

4.6222 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 remove object in array javascript - loại bỏ đối tượng trong mảng javascript

Shiv Kumar

9061 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.1584 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.8697 Huy hiệu vàng41 Huy hiệu bạc62 Huy hiệu Đồng7 gold badges41 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 remove object in array javascript - loại bỏ đối tượng trong mảng javascript

Matthias Smatthias sMatthias S

Huy hiệu đồng 1951 Silver8 Huy hiệu đồng1 silver badge8 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 remove object in array javascript - loại bỏ đối tượng trong mả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 remove object in array javascript - loại bỏ đối tượng trong mảng javascript

MaksoodmaksoodMaksood

1.14014 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"

<pre>
**Results**

</pre>
0

Demo:

<pre>
**Results**

</pre>
1
<pre>
**Results**

</pre>
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 remove object in array javascript - loại bỏ đối tượng trong mảng javascript

LegendslegendsLegends

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

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

<pre>
**Results**

</pre>
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 remove object in array javascript - loại bỏ đối tượng trong mảng javascript

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

Hàm shift (): Phương thức này được sử dụng để loại bỏ các phần tử từ đầu một mảng.Hàm splice (): Phương pháp này được sử dụng để loại bỏ các phần tử khỏi chỉ số cụ thể của một mảng.Chức năng Filter (): Phương thức này được sử dụng để loại bỏ các phần tử theo cách lập trình.: This method is use to remove elements from the start of an array. splice() function: This method is use to remove elements from the specific index of an array. filter() function: This method is use to remove elements in programmatically way.

Làm cách nào để loại bỏ một mục khỏi một mảng?

Nếu bạn muốn xóa một mục khỏi một mảng, bạn có thể sử dụng phương thức pop () để xóa phần tử cuối cùng hoặc phương thức Shift () để xóa phần tử đầu tiên.use the pop() method to remove the last element or the shift() method to remove the first element.

Làm cách nào để loại bỏ một mục khỏi một chỉ mục mảng?

Tìm chỉ mục của phần tử mảng bạn muốn xóa bằng cách sử dụng indexof, sau đó xóa chỉ mục đó bằng splice.Phương thức splice () thay đổi nội dung của một mảng bằng cách loại bỏ các phần tử hiện có và/hoặc thêm các phần tử mới.Tham số thứ hai của mối nối là số lượng các phần tử để loại bỏ. . The splice() method changes the contents of an array by removing existing elements and/or adding new elements. The second parameter of splice is the number of elements to remove.

JS loại bỏ () làm gì?

loại bỏ () phương thức loại bỏ phần tử khỏi DOM.removes the element from the DOM.