이 코드의이면에있는 아이디어는 누군가가 버튼을 클릭하고 존재하지 않는 경우 하나의 거짓 값을 삽입 할 때 매우 간단합니다. 그렇게하기 위해 나는 for 루프를 만들어서 얼마나 많은 거짓 값이 존재하는지, 그리고 그들이 더 적은지 확인합니다. 하나보다 거짓 값을 삽입하는 것보다
여기에 코드가 있습니다
addNote(index){
const order = this.state.order
var j =0;
const note=order[index].note
for(var i =0; i<note.length; i++){
if(note[i].display===false){j++;}
if(j==0){note[note.length]={display:false}}
console.log(j)
}
console.log(note)
this.setState({order:this.state.order})
}
콘솔 로그 결과를 보면 각 클릭에 대해 j 값이 증가하는 것입니다. 내 if 문이 각 클릭에 대해 작동하는 이유보다 j 값이 0 인 경우에만 작동해야합니다.이 줄에 대해 이야기하고 있습니다. if(j==0){note[note.length]={display:false}}
클릭하기 전의 배열입니다.
0:Object
display:true
note:"jhj"
두 번째 클릭 후 배열
0:Object
display:true
note:"jhj"
1:Object
display:false
두 번째 클릭 후 배열
0:Object
display:true
note:"jhj"
1:Object
display:false
2:Object
display:false
두 if
명령문이 모두 루프 안에 있으면 호출 될 때마다 배열에 새 항목을 추가합니다 addNote
. 있다고 때문은 j
항상 0
루프의 첫 번째 반복에와 있기 때문 note[0].display
이다 true
, 그것을 유지 0
. 이어서 물론 if (j==0)
이다 true
어레이에 새로운 요소를 추가. 즉, 각 요소를 함께 보는 것이 아니라 개별적으로보고 새 항목을 추가할지 여부를 결정하는 것입니다.
1보다 작 으면 거짓 값을 삽입하고 그렇지 않으면 아무것도하지 않습니다.
그것은 당신의 코드가하는 일이 아닙니다. 경우 귀하의 코드는 새 값을 삽입 어떤 항목이있다 display: true
. 첫 번째 요소에 해당 항목이 있으므로 코드는 항상 새 항목을 추가합니다.
다음 코드는 루프 대신 원하는 작업을 수행합니다.
if (!note.some(item => item.display === false)) {
note.push({display:false});
}
" display === false
새 요소 를 추가 하는 요소가없는 경우"로 번역됩니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다