2017-05-24 10 views
1

配列をソートする必要がありますが、2つのオブジェクトがあるため、これを行う方法がわかりません。犬の名前をアルファベット順やおもちゃの番号順に並べ替える必要があります。これどうやってするの? Array#sortが最初にしてtoynum2つのオブジェクトで配列を並べ替える

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

の可能性のある重複した[Javascriptを、どのように複数の列に配列をソートしますか?](https://stackoverflow.com/questions/2784230/javascript-how-do-you-並べ替え複数の列に) – Andreas

+0

あなたはどのような順序が必要ですか?名前asc、おもちゃasc otおもちゃasc、名前asc? –

+0

私は名前ascと、おもちゃの別の例の例を挙げたいと思います。 –

答えて

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>

関連する問題