나는이 있습니다. 각 행 다음에 <div class="clearfix"></div>
을 삽입하고 싶습니다.자바 스크립트지도 배열의 마지막 항목
필자는 어떻게 든 각 행의 마지막 인덱스를 얻을 수 있다면 행 맵 콜백에서 사용할 수있을 것이라고 생각합니다. 누군가 어떻게 내게 그것을 보여줄 수 있습니까?
나는이 있습니다. 각 행 다음에 <div class="clearfix"></div>
을 삽입하고 싶습니다.자바 스크립트지도 배열의 마지막 항목
필자는 어떻게 든 각 행의 마지막 인덱스를 얻을 수 있다면 행 맵 콜백에서 사용할 수있을 것이라고 생각합니다. 누군가 어떻게 내게 그것을 보여줄 수 있습니까?
const rowLen = row.length;
row.map((rank, i) => {
if (rowLen === i + 1) {
// last one
} else {
// not last one
}
})
감사합니다. 완벽하게 작동했습니다. – cocacrave
LeoYuan 袁力皓 대답은 이것이 정답이지만 조금 개선 될 수 있습니다.
map
은 반복 된 배열 자체 인 세 번째 매개 변수가있는 함수를 허용합니다. 당신이 범위를 혼합하면
row.length
의 arr.length
를 사용는 row.map((rank, i, arr) => {
if (arr.length - 1 === i) {
// last one
} else {
// not last one
}
});
여러 가지 이유로 더 나은 및 올바른 접근 방법이다. 일반적으로 가능한 경우 범위 간 혼합을 피하는 것이 좋습니다.
명시 적 배열을 제공하려는 경우 잘 작동합니다. 예 : 당신이 (주로 성능 향상을 위해)을 map
범위 외부에서 콜백을 이동 싶은 경우에
[1,2,3,4].map((rank, i, arr) => {
if (arr.length - 1 === i) {
// last one
} else {
// not last one
}
});
, 범위를 벗어으로 row.length
을 사용하는 것이 잘못된 것입니다. 예 : 영업 경우 :
const mapElement = (rowIndex, state, toggled, onClick) => {
return (rank, i, arr) => {
let lastIndex = arr.length - 1;
return [element(rowIndex, i, state, rank, toggled, onClick, lastIndex)];
};
};
map = ranks.map((row, r) => row.map(mapElement(r, state, toggled, onClick)));
왜'row.length' 대신'arr'을 추가합니까? – Sanderfish
@Sanderfish 세 가지 이유 : 1. 일반적으로 스코프를 섞어 놓는 것을 좋아하지 않습니다.이 방법은 특히이 코드가 거대한 응용 프로그램의 일부일 때 더 깨끗한 솔루션을 만듭니다. 이 솔루션은 명시 적으로 정의 된 배열, 예를 들어. '[1,2,3] .map ((rank, i, arr) => {...})'; 3. 어떤 이유로 든 (예를 들어 루프에서) 범위 밖에서 콜백을 이동하기로 결정한 경우'row.length'를 실행하면 작동하지 않습니다. 내 대답을 분명히하기 위해 업데이트 할 것입니다. –
'.map (rank, i, {length}) => {...})' –
허용 대답에 약간의 개선 :
const lastIndex = row.length - 1;
row.map((rank, i) => {
if (i === lastIndex) {
// last one
} else {
// not last one
}
})
이것은 루프 내부에서 연산을 제거합니다.
실제로 달성하고자하는 것은 무엇입니까? – kazenorin