자바 스크립트 객체 push () 함수
나는 자바 스크립트 객체를 가지고 있습니다 (실제로 ajax 요청을 통해 데이터를 얻습니다).
var data = {};
나는 그것에 몇 가지를 추가했습니다.
data[0] = { "ID": "1"; "Status": "Valid" }
data[1] = { "ID": "2"; "Status": "Invalid" }
이제 잘못된 상태의 모든 개체를 제거하고 싶습니다 (그러나 모든 순서는 동일하게 유지).
var tempData = {};
for ( var index in data ) {
if ( data[index].Status == "Valid" ) {
tempData.push( data );
}
}
data = tempData;
내 생각에는이 모든 것이 작동하지만 tempData.push
함수가 아닌 오류가 발생합니다 . 배열과 동일하지 않은 이유를 이해하지만 그렇지 않으면 무엇을 할 수 있습니까?
push()
객체가 아닌 배열 용 이므로 올바른 데이터 구조를 사용하세요.
var data = [];
// ...
data[0] = { "ID": "1", "Status": "Valid" };
data[1] = { "ID": "2", "Status": "Invalid" };
// ...
var tempData = [];
for ( var index=0; index<data.length; index++ ) {
if ( data[index].Status == "Valid" ) {
tempData.push( data );
}
}
data = tempData;
객체는 푸시 속성을 지원하지 않지만 인덱스를 키로 사용하여 저장할 수도 있습니다.
var tempData = {};
for ( var index in data ) {
if ( data[index].Status == "Valid" ) {
tempData[index] = data;
}
}
data = tempData;
상태가 유효하지 않은 경우 개체를 제거하면 더 쉽습니다.
for(var index in data){
if(data[index].Status == "Invalid"){
delete data[index];
}
}
마지막으로 var temp를 만들 필요가 없습니다.
당신은 만들어야합니다 var tempData = new Array();
푸시는 배열 기능입니다.
Javascript programming language supports functional programming paradigm so you can do easily with these codes.
var data = [
{"Id": "1", "Status": "Valid"},
{"Id": "2", "Status": "Invalid"}
];
var isValid = function(data){
return data.Status === "Valid";
};
var valids = data.filter(isValid);
I assume that REALLY you get object from server and want to get object on output
Object.keys(data).map(k=> data[k].Status=='Invalid' && delete data[k])
var data = { 5: { "ID": "0", "Status": "Valid" } }; // some OBJECT from server response
data = { ...data,
0: { "ID": "1", "Status": "Valid" },
1: { "ID": "2", "Status": "Invalid" },
2: { "ID": "3", "Status": "Valid" }
}
// solution 1: where output is sorted filtred array
let arr=Object.keys(data).filter(k=> data[k].Status!='Invalid').map(k=>data[k]).sort((a,b)=>+a.ID-b.ID);
// solution2: where output is filtered object
Object.keys(data).map(k=> data[k].Status=='Invalid' && delete data[k])
// show
console.log('Object',data);
console.log('Array ',arr);
Do :
var data = new Array();
var tempData = new Array();
tempData.push( data[index] );
I agree with the correct answer above, but.... your still not giving the index value for the data that you want to add to tempData. Without the [index] value the whole array will be added.
참고URL : https://stackoverflow.com/questions/8925820/javascript-object-push-function
'programing' 카테고리의 다른 글
인텔 x86 에뮬레이터 가속기 (HAXM 설치 프로그램) 버전 6.0.5가 Windows와 호환되지 않는 것으로 표시됨 (0) | 2020.09.12 |
---|---|
왼쪽 외부 조인에서 반환 된 기본 Null 값 바꾸기 (0) | 2020.09.12 |
C #에서 volatile 키워드의 사용법 설명 (0) | 2020.09.12 |
WCF 서비스, 시간 제한을 늘리는 방법은 무엇입니까? (0) | 2020.09.11 |
디렉토리의 모든 파일 목록 가져 오기 (재귀 적) (0) | 2020.09.11 |