필자는 쉼표로 분리 된 문자열을 가지고 있습니다. 그 중 재발이없는 것을 확인하면서 원래 문자열에있는 항목의 임의의 순서를 포함하는 새 문자열을 만들어야합니다. 예 : 1,2,3,1,3을 실행하면 2,3,1이되고 다른 시간이 3,1,2가됩니다.JS에서 재발없이 주어진 목록에서 임의의 목록을 효율적으로 만드는 방법은 무엇입니까?
원래 문자열에서 임의의 항목을 선택하고 새 문자열을 반복하여 코드가 이미 존재하지 않는지 확인합니다. 존재하지 않으면 항목이 삽입됩니다. 그러나 C#에서는 새 배열에서 매번 반복되는 대신 해시 테이블을 사용했을 것이라고 생각합니다. 예를 들어 난수가 동일한 결과를 줄 경우를 방지하기 위해 원래 배열에서 삽입 한 항목을 제거하는 것이 하나의 개선 사항이 될 수 있습니다.
아래 코드를 개선 할 것을 제안 할 수 있으면 기쁘게 생각합니다.
originalArray = originalList.split(',');
for (var j = 0; j < originalArray.length; j++) {
var iPlaceInOriginalArray = Math.round(Math.random() * (originalArray.length - 1));
var bAlreadyExists = false;
for (var i = 0; i < newArray.length; i++) {
if (newArray[i].toString() == originalArray[iPlaceInOriginalArray].toString()) {
bAlreadyExists = true;
break;
}
}
if (!bAlreadyExists)
newArray.push(originalArray[iPlaceInOriginalArray]);
}
고마워요!
고마워, 난 그 통지를하지 않았다. – Nir