왜 나는 JS 수조 중의 한 대상의 원소 값만 바꾸었는지, 다른 대상의 원소 값은 모두 따라서 변했다
3962 단어 위챗 애플릿
$.each(dataList, function(i,arr){
let payArr = [];
data.forEach(v=>{
for (var key in arr){
if('pay'+v.payNo == key&&arr[key]!= null &&arr[key]!== '0.00'){
v.payAmount = arr[key];
payArr.push(v);
}
}
});
dataList[i].payArr = payArr ; //
});
내가 조립한 한 수조의 값을 1층 순환하는 수조의 대상에게 부여했다. 나는 분명히 순환 값을 부여했다. 그러나 매번 값을 부여한 후에 데이터 리스트에 있는 모든 대상 요소의payArr는 함께 변한다. 똑같은 것으로 변한다. 다음에 겨우 세 시간 가까이 걸렸을 때 이 문제에서 변수의 위치가 맞지 않거나 순환 방식에 문제가 있는지 생각하기 시작했고 모두forEach와 $를 바꿨다.each와 for는 결국 해결되지 않았다. 뒤에서 한 블로거가 아이디어를 제시했다. 수조는 인용 변수이기 때문에 인용 값을 부여했다. 사실은 원래의 수조이다. 즉, 내가 데이터 리스트에 부여한payArr는 항상 같은 주소에 저장된 같은 수조이기 때문에 마지막으로 payArr를 수정한 후에 인용마다 함께 고쳤다. 그러면 어떻게 해결할까?
dataList[i].payArr = JSON.parse(JSON.stringify(payArr)) ; 원리는 수조를 문자열로 변환한 다음에 대상으로 변환하는 것이다. 이렇게 하면 메모리에 새로 대상을 분배하고 문제를 해결할 수 있다. 이것은 기본적인 구덩이이다. 메우면 나와 같은 문제를 겪는 여러분에게 유용하기를 바란다. -------------판권 성명: 본고는 CSDN 블로거'koko8566'의 오리지널 글로 CC4.0 BY-SA 판권 협의에 따라 원문의 출처 링크와 본 성명을 옮겨 싣습니다.텍스트 링크:https://blog.csdn.net/zhangxiwen_/article/details/90178819
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
유니앱, 위챗 애플릿에서 MQTT 사용 문제(1)MQTT.js는 JavaScript로 작성된 MQTT 프로토콜의 클라이언트 라이브러리로 Node에 사용할 수 있습니다.js와 브라우저.노드에서.js단은 전역 설치를 통해 명령행 연결을 사용할 수 있으며 MQTT...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.