0

配列を通過する次のループがあります。

for(var j=0; j<10;j++) {
  for(var k=0; k<10; k++) {

    if(final[k]==ya[j]){
      final[k].changeRankScore((ya[j].score + final[k].score)/2);

    }else{

    }
  }
}

10 個の要素を持つ 2 つの配列があります。最終的に見つかった重複要素があるかどうかを確認しています。はいの場合、重複要素の final のスコアを変更し、final に追加しないでください。いいえの場合は、要素を final に追加できます。

私が考えた方法の 1 つは、要素にタグを付けて後で配列に追加することでした。

これを行うより良い方法はありますか?

編集:

Final = { 1, 2, 3, 4, 5, 6, 7 } ; 
ya = { 2 , 8, 7, 9, 10, 11, 12 } ; 

配列 Ya をループしています。要素が配列 Final にもある場合は、その要素のスコアを増やします (オブジェクトであるため)。見つからない場合は、要素を配列 Ya から配列 final にプッシュするだけです。

この場合、配列 Ya の 2 番と 7 番が重複しています。したがって、最終配列のこれらの数値に関連付けられたスコアを増やす必要がありますが、配列 Ya の残りの要素を最終にプッシュする必要があります。配列は次のようになります

Final = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12} 
4

2 に答える 2

0

フレームワークを使用したくない場合は、次のコードを使用します。

function mix(first_arr, second_arr) {
    for(i = 0; i < second_arr.length; i++) {
        if(first_arr.indexOf(second_arr[i]) == -1) {
            first_arr.push(second_arr[i]);
        }
    }
    return first_arr;
}

実際に見てくださいhttp://jsfiddle.net/jwAmA/

PD: オブジェクト {} の代わりに配列 [] を使用してください

于 2013-03-30T23:56:00.913 に答える
0

サンプル データは完全に有効ではありません。これはあなたが意味するものですか?http://jsfiddle.net/B74Gm/

var final = {
    1: {score:0},
    2: {score: 2},
    3: {score: 0},
    4: {score: 5},
    5: {score: 1},
    6: {score: 10}, 
    7: {score: 10}
},

ya = {
    2: {score: 2},
    10: {score: 3}, 
    4: {score: 0},
    15: {score: 0},
    6: {score: 4},
    17: {score: 5}
}; 

for (var i in ya) {
    final[i] = final[i] || {score: 0};
    final[i].score += ya[i].score;
}
于 2013-03-30T23:22:35.630 に答える