728x90
반응형
질문 : JavaScript를 사용하여 배열에서 객체 제거
배열에서 개체를 제거하려면 어떻게해야합니까? someArray
에서 Kristian
이라는 이름을 포함하는 객체를 제거하고 싶습니다. 예를 들면 :
someArray = [{name:"Kristian", lines:"2,5,10"},
{name:"John", lines:"1,19,26,96"}];
나는 달성하고 싶다 :
someArray = [{name:"John", lines:"1,19,26,96"}];
답변
여러 방법을 사용하여 배열에서 항목을 제거 할 수 있습니다.
//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
x
위치에서 요소를 제거하려면 다음을 사용하십시오.
someArray.splice(x, 1);
또는
someArray = someArray.slice(0, x).concat(someArray.slice(-x));
의 댓글에 대한 답글 @ chill182 : 사용 배열에서 하나 개 이상의 요소를 제거 할 수 있습니다 Array.filter
, 또는 Array.splice
와 함께 Array.findIndex
(참조 MDN을 ), 예를 들어,
// non destructive filter > noJohn = John removed, but someArray will not change
let someArray = getArray();
let noJohn = someArray.filter( el => el.name !== "John" );
log("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("", "destructive filter/reassign John removed > someArray2 =",
format(someArray2));
log(`**someArray2.length ${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("", "destructive splice /w findIndex Brian remains > someArray3 =",
format(someArray3));
log(`**someArray3.length ${someArray3.length}`);
// Note: 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("", "check findIndex result first > someArray4 (nothing is removed) > ",
format(someArray4));
log(`**someArray4.length (should still be 3) ${someArray4.length}`);
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>
출처 : https://stackoverflow.com/questions/10024866/remove-object-from-array-using-javascript
728x90
반응형
'프로그래밍 언어 > HTML,CSS,JS' 카테고리의 다른 글
AngularJS에서 $ scope. $ watch와 $ scope. $ apply를 사용하는 방법 (0) | 2021.07.14 |
---|---|
div가 나머지 화면 공간의 높이를 채우도록 하는 방법 (0) | 2021.07.13 |
CSS를 사용하여 목록 항목에서 줄 바꿈을 방지하는 방법 (0) | 2021.07.13 |
CSS를 사용하는 테이블 행 색상 변경 (0) | 2021.07.13 |
CSS를 사용하는 모든 브라우저에 대해 "div"요소를 세로 중앙에 배치하는 방법 (0) | 2021.07.13 |