반응형
배열의 모든 객체에 대한 속성 제거
bad
배열의 모든 개체에서 속성 을 제거하고 싶습니다 . for
루프를 사용하고 모든 객체에서 삭제 하는 것보다 더 좋은 방법이 있습니까?
var array = [{"bad": "something", "good":"something"},{"bad":"something", "good":"something"},...];
for (var i = 0, len = array.length; i < len; i++) {
delete array[i].bad;
}
을 사용하는 방법이 있어야 할 것 같습니다 prototype
. 모르겠어요. 아이디어?
유일한 다른 방법은 외형이며 실제로는 루프입니다.
예 :
array.forEach(function(v){ delete v.bad });
IE8과 호환되도록하려면 forEach에 대한 shim이 필요 합니다 . 프로토 타입을 언급했듯이 prototype.js에도 shim이 있습니다.
ES6를 사용하면 각 개체를 분해하여 명명 된 속성없이 새 개체를 만들 수 있습니다.
const newArray = array.map(({dropAttr1, dropAttr2, ...keepAttrs}) => keepAttrs)
맵을 사용하여 속성을 삭제 한 다음 새 배열 항목을 반환하는 것을 선호합니다.
array.map(function(item) {
delete item.bad;
return item;
});
프로토 타입을 사용하는 솔루션은 객체가 비슷할 때만 가능합니다.
function Cons(g) { this.good = g; }
Cons.prototype.bad = "something common";
var array = [new Cons("something 1"), new Cons("something 2"), …];
그러나 그것은 간단합니다 (그리고 O(1)
) :
delete Cons.prototype.bad;
underscore.js 를 사용하는 경우 :
var strippedRows = _.map(rows, function (row) {
return _.omit(row, ['bad', 'anotherbad']);
});
객체가 복사되고 객체의 원래 배열에 영향을 미치지 않도록 루프 Object.assign
내 에서 사용 하는 것이 좋습니다.forEach()
var res = [];
array.forEach(function(item) {
var tempItem = Object.assign({}, item);
delete tempItem.bad;
res.push(tempItem);
});
console.log(res);
제 생각에는 이것은 가장 간단한 변형입니다
array.map(({good}) => ({good}))
var array = [{"bad": "something", "good":"something"},{"bad":"something", "good":"something"}];
var results = array.map(function(item){
return {good : item["good"]}
});
console.log(JSON.stringify(results));
참고 URL : https://stackoverflow.com/questions/18133635/remove-property-for-all-objects-in-array
반응형
'Program Tip' 카테고리의 다른 글
$ (document) .ready ()가 모두 실행 된 후 이벤트가 있습니까? (0) | 2020.12.06 |
---|---|
phpMyAdmin에서 가져 오기 크기 제한을 늘리는 방법 (0) | 2020.12.06 |
Charts.js로 애니메이션 비활성화 (0) | 2020.12.06 |
신속한 NSNumber에 대한 문자열 (0) | 2020.12.06 |
숭고한 텍스트로 원격 파일을 여는 방법 3 (0) | 2020.12.06 |