2017-05-24 1 views
1

내 배열을 정렬해야하지만 두 객체가 있으므로이 작업을 수행하는 방법을 잘 모릅니다. 개 이름을 영문자와 장난감 번호로 오름차순으로 정렬해야합니다. 어떻게해야합니까? Array#sort 당신은 데이터 배열을 작성 이후에 정렬 한 번만 필요 toynum두 객체로 배열 정렬

arr.sort(function (a, b) { 
    return a.name.localeCompare(b.name) || a.toynum - b.toynum; 
}); 

에 의해 다음 사용자 지정 정렬을 위해 필요하며, 정렬 name 제로서

function start() { 
    document.getElementById("task").innerHTML="Task 8"; 
    var arr = []; 
    var vName = ""; 
    vName = prompt("Enter dog name (leave blank to stop)"); 
    vToyNum = prompt("Enter number of dog toys (leave blank to stop)"); 
    while (vName.length > 0 && vToyNum.length > 0) { 
     arr.push({name:vName,toynum:vToyNum}); 
     arr.sort({name:vName}); 
     vName = prompt("Enter dog name (leave blank to stop)"); 
     vToyNum = prompt("Enter number of dog toys (leave blank to stop)"); 
    } 
    var vOutput = "Dog names and No. of toys:" + displayDog(arr); 
    var toyTot = 0; 
    for (var val=0; val < arr.length; val++) { 
     toyTot += Number (arr[val].toynum); 
    } 
    vOutput += "<br/><br/>Total number of toys: " + toyTot; 
    document.getElementById("output").innerHTML= vOutput; 
} 

function displayDog(arr) { 
    var vOutput = ""; 
    for (var val = 0; val < arr.length; val++) { 
     vOutput += "<br/> Dog " + (val + 1) +" "+ arr[val].name 
       + ", No. of toys " + arr[val].toynum; 
    } 
    return vOutput; 
} 
+0

가능한 중복 https://stackoverflow.com/questions/2784230/javascript-how-do-you- sort-an-array-on-multiple-columns) – Andreas

+0

어떤 순서로 주문해야합니까? 이름 오름차순, 장난감 오름차순 오트 장난감 오름차순, 이름 오름차순? –

+0

나는 이름 오름과 장난감의 또 다른 예가 각각 하나씩 오름차순을 보여주고 싶다. –

답변

0

당신은 정렬 기능을 사용할 수 있습니다.

function start() { 
 
    document.getElementById("task").innerHTML = "Task 8"; 
 
    var arr = [], 
 
     vName = "", 
 
     vToyNum, 
 
     vOutput, 
 
     toyTot = 0, 
 
     val, 
 
     DOG_QUESTION = "Enter dog name (leave blank to stop)", 
 
     TOY_QUESTION = "Enter number of dog toys (leave blank to stop)"; 
 

 
    vName = prompt(DOG_QUESTION); 
 
    vToyNum = prompt(TOY_QUESTION); 
 
    while (vName.length > 0 && vToyNum.length > 0) { 
 
     arr.push({ name: vName, toynum: vToyNum }); 
 
     vName = prompt(DOG_QUESTION); 
 
     vToyNum = prompt(TOY_QUESTION); 
 
    } 
 

 
    arr.sort(function (a, b) { 
 
     return a.name.localeCompare(b.name) || a.toynum - b.toynum; 
 
    }); 
 

 
    vOutput = "Dog names and No. of toys:" + displayDog(arr); 
 
    
 
    for (val = 0; val < arr.length; val++) { 
 
     toyTot += Number(arr[val].toynum); 
 
    } 
 

 
    vOutput += "<br /><br />Total number of toys: " + toyTot; 
 
    document.getElementById("output").innerHTML = vOutput; 
 
} 
 

 
function displayDog(arr) { 
 
    var val, vOutput = ""; 
 
    for (val = 0; val < arr.length; val++) { 
 
     vOutput += "<br /> Dog " + (val + 1) + " " + arr[val].name + ", No. of toys " + arr[val].toynum; 
 
    } 
 
    return vOutput; 
 
} 
 

 
start();
<div id="task"></div> 
 
<div id="output"></div>

[여러 컬럼에 배열을 정렬 어떻게 자바 스크립트,?] (의