어떻게 분리합니까 객체에는 배열에서? I wish 지루려면 포함된 '에서' 이름 '크리스티안 객체에는 소미어리. 예를 들면 다음과 같습니다.
someArray = [{name:"Kristian", lines:"2,5,10"},
{name:"John", lines:"1,19,26,96"}];
someArray = [{name:"John", lines:"1,19,26,96"}];
여러 가지 방법을 사용할 수 있습니다 (s) 를 지루려면 품목으로부터 어레이에서는:
//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, a.length - 1); // last element removed
//6
someArray.length = someArray.length - 1; // last element removed
'X' 확인표시를 지루려면 요소점 dell. 포지셔닝하십시오 사용합니다.
someArray.splice(x, 1);
또는
someArray = someArray.slice(0, x).concat(someArray.slice(-x));
해마다 대한 회신과 @chill182: 하나 이상의 요소를 사용하여 제거할 수 있습니다 '에서', '또는' 라이오스플리스 어레이에서는 라이트필터 라이스핀디네스 (http://otl. 매든 ) '와' (예:
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 진정한 바벨. > 거짓값 -;
// 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}`);
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>
끝 - < 스니핏 >;!
청소하십시오 약간만이라도 솔루션을 사용할 수 있는 '라이트필터':
var filtered = someArray.filter(function(el) { return el.Name != "Kristian"; });
문제는 이런 것이 작동하지 않는 의 IE <. 9. 그러나 코드를 포함할 수 있습니다 (예: [언더스코엘가이스] [3]) 에서 자바스크립트 라이브러리) 를 구현하는 이 모든 브라우저.
[3]: http://documentcloud.github.com/underscore/ # 필터링합니다
네 " array"; 이 같이 잘못된 자바스크립트 문법. 중괄호 ' {}' 이 있는 객체에 대한 속성 값 쌍에 대한 어레이에는 [] '이 아니라' 이름 / 대괄호의 마치 있습니다.
someArray = [{name:"Kristian", lines:"2,5,10"}, {name:"John", lines:"1,19,26,96"}];
이 경우, 사용할 수 있습니다. ['오스플리스 ()' 방법] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice) 를 항목 제거. 첫 번째 항목 (인덱스화할 0), 기도하라주여 지루려면
someArray.splice(0,1);
// someArray = [{name:"John", lines:"1,19,26,96"}];
for (var i =0; i < someArray.length; i++)
if (someArray[i].name === "Kristian") {
someArray.splice(i,1);
break;
}
편집: 그냥 줄 수도 있다,, 그래서 당신은 이 질문을 태그로 첨부됩니다 " jQuery" ['$ 지그레프 ()' 방법] (http://api.jquery.com/jQuery.grep/):
someArray = $.grep(someArray,
function(o,i) { return o.name === "Kristian"; },
true);
라이트필터 () 을 사용할 수 있습니다.
예:
someArray = [{name:"Kristian", lines:"2,5,10"},
{name:"John", lines:"1,19,26,96"}];
someArray = someArray.filter(function(returnableObjects){
return returnableObjects.name !== 'Kristian';
});
//someArray will now be = [{name:"John", lines:"1,19,26,96"}];
화살표 기능:
someArray = someArray.filter(x => x.name !== 'Kristian')
내가 예증의표적으로 는 동적 기능을 제거한 후 같은 어레이입니다 객체에는 어레이이며 키와 값을 반환하는 원하는 객체를:
function removeFunction (myObjects,prop,valu)
{
return myObjects.filter(function (val) {
return val[prop] !== valu;
});
}
전체 예: [데모] [1]
var obj = {
"results": [
{
"id": "460",
"name": "Widget 1",
"loc": "Shed"
}, {
"id": "461",
"name": "Widget 2",
"loc": "Kitchen"
}, {
"id": "462",
"name": "Widget 3",
"loc": "bath"
}
]
};
function removeFunction (myObjects,prop,valu)
{
return myObjects.filter(function (val) {
return val[prop] !== valu;
});
}
console.log(removeFunction(obj.results,"id","460"));
이 같은 일을 할 수도 있습니다.
var myArray = [{'name': 'test'}, {'name':'test2'}];
var myObject = {'name': 'test'};
myArray.splice(myArray.indexOf(myObject),1);
투표할 언더코레이스 의 간단한 작동합니까 배열입니다.
[_.without ()] [2] 함수은 요소를 제거하는 데 도움이 됩니다.
_.without([1, 2, 1, 0, 3, 1, 4], 0, 1);
=> [2, 3, 4]
[2]: http://underscorejs.org/ #, # 40;; # 41; " & 없이 _.without& ";
E 로 6 화살표 기능
let someArray = [
{name:"Kristian", lines:"2,5,10"},
{name:"John", lines:"1,19,26,96"}
];
let arrayToRemove={name:"Kristian", lines:"2,5,10"};
someArray=someArray.filter((e)=>e.name !=arrayToRemove.name && e.lines!= arrayToRemove.lines)
비록 이 해당 이러한 상황에 대한 다른 날 수 있다는 것이 아닐 수 있는 '키워드' 내가 또한 list. 삭제하시겠습니까 배열에서 항목을 제거하는 don& # 39 의 크기를 변경할 필요가 없는 경우, 어레이입니다 예:
var myArray = [1,2,3];
delete myArray[1];
console.log(myArray[1]); //undefined
console.log(myArray.length); //3 - doesn't actually shrink the array down
이 질문에
for (var i =0; i < someArray.length; i++)
if (someArray[i].name === "Kristian") {
someArray.splice(i,1);
}
여러 조건을 이행하는 레코드전자문서의 작동하지 않습니다. 이런 경우, 다른 1 만 2 년 연속 기록, 첫 번째는 재거됨 건너뛸지. 사용해야 합니다.
for (var i = someArray.length - 1; i>= 0; i--)
...
대신.
가장 단순한 솔루션 약간만이라도 맵을 만드는 데 indexe 저장하는 각 객체에는 이름으로, 다음과 같습니다.
//adding to array
var newPerson = {name:"Kristian", lines:"2,5,10"}
someMap[ newPerson.name ] = someArray.length;
someArray.push( newPerson );
//deleting from the array
var index = someMap[ 'Kristian' ];
someArray.splice( index, 1 );
그래서 어레이입니다 구문 오류가 있을 수 있는 것 같다고 가정하면, 그러니까 어레이에서는 객체에 대한 반대로 [라이오스플리스] (https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/splice) 는 친구 수 있습니다.
someArray = [{name:"Kristian", lines:"2,5,10"}, {name:"John", lines:"1,19,26,96"}];
someArray.splice(1,1)
someArray = [{name:"Kristian", lines:"2,5,10"},{name:"John",lines:"1,19,26,96"}];
newArray=[];
someArray.map(function(obj, index){
if(obj.name !== "Kristian"){
newArray.push(obj);
}
});
someArray = newArray;
console.log(someArray);
특정 항목을 모두 제거할 경우 다음 javascript 객체 (몇 가지 조건을 기준으로) 안에 스플라이스를 루프지 위한 방법
객체 제거 영향을 주기 때문에 이 어레이에는 합니다 길이 감소 카운터 한 단계 도왔으매 길이 확인란 그대로 유지됩니다.
var objArr=[{Name:"Alex", Age:62},
{Name:"Robert", Age:18},
{Name:"Prince", Age:28},
{Name:"Cesar", Age:38},
{Name:"Sam", Age:42},
{Name:"David", Age:52}
];
for(var i = 0;i < objArr.length; i ++)
{
if(objArr[i].Age > 20)
{
objArr.splice(i, 1);
i--; //re-adjust the counter.
}
}
위의 코드는 스니핏 절감뿐만 20 세 이상의 모든 객체에는.