레코드에는 이전 색상/번호와 새 속성이 있으며 변경할 수 있습니다. 배열을 통해 반복하고 이전 값과 새 값이 일치하지 않는지 확인하려고합니다. 그렇지 않은 경우 어떤 속성이 변경되었는지 (색상/숫자) 결정하고 해당 레코드의 변경된 속성을 설정 한 다음 배열로 푸시하고 싶습니다. 레코드의 색과 숫자가 모두 변경된 경우에는 변경된 속성이 다른 각 배열 항목의 복사본이 필요합니다.어레이 푸시 덮어 쓰기
나는 여러 가지 방법을 시도해 왔으며, 내가 무엇을하더라도 변경된 속성을 덮어 쓰려고합니다. 로컬 배열을 사용하려고 시도 했는데도 문제가 해결되지 않았습니다. 다음은 그 예입니다. 당신이 output.push('rec')
을 수행 할 때
export class Record {
id: string;
oldcolor: string;
newcolor: string;
oldnumber: string;
newnumber: string;
changed: string;
}
@Input() newrecords: Record[];
output: Record[] = [];
functionTest() {
for (let rec of this.newrecords) {
if (rec.newcolor != rec.oldcolor) {
rec.changed = "color";
output.push(rec);
}
if (rec.newnumber != rec.oldnumber) {
rec.changed = "number";
output.push(rec);
}
}
}
desired result
[{
id: 1;
oldcolor: red;
newcolor: red;
oldnumber: 6;
newnumber: 6;
changed: color;
},
{
id: 1;
oldcolor: red;
newcolor: red;
oldnumber: 6;
newnumber: 6;
changed: number;
}]
감사 마크. 당신이 언급 한보다 효율적인 방법은 무엇입니까? – meli02
글쎄요, 추측 컨데 ... 일단 당신이 그것을 만들었다면 당신이 배열을 가지고 무엇을하고 있는지에 달려 있습니다. 특정 방식으로 데이터를 표시해야하는 UI 그리드 용 데이터 저장소를 제공하는 경우 다른 방법이 없을 수 있습니다. OTOH 당신이 제어하는 함수에 처리를 위해 이것을 전달한다면, 당신이 원하는 방식으로 구조를 정의 할 수 있습니다. 예를 들어'changed = 'both'; 'changed : [ "color", "number"]')는 (객체를 복사하기위한) 처리와 사본을 저장하기위한 메모리를 절약 할 수 있습니다. –