0

私は初心者で、英語もそれほど上手ではありません。私の問題は、配列からオブジェクトテーブルを作成しようとしているのに、成功しないことです。目標は、単純な請求書スクリプトを作成することですが、行き詰まります。いくつかの位置を持つ配列があるとしましょう:

recordArr = [value、valueWithTax、taxInPercent]

キー「taxInPercent」によって位置(value、valueWithTax)を合計するオブジェクト配列を作成したいと思います。私が今やったことは:

for(key in recordArr){   
    if ( isNaN(SortrRecordArr[recordArr[key][2]]) ) {
        SortrRecordArr[recordArr[key][2]] = [recordArr[0], recordArr[1]]
       }
       else {
          newValue = SortrRecordArr[recordArr[key][2]][0] + recordArr[0]
          newValueWithTax = SortrRecordArr[recordArr[key][2]][1] + recordArr[1]

          SortrRecordArr[recordArr[key][2]] = [newValue, newValueWithTax];
       }        
}

ただし、これはrecordArrに表示される最後の値のみを保持します

もちろん、以前にオブジェクトと変数を定義しました。私は自分自身を明確にしたことを望みます。

だからそれはこのようなものです:

私が配列を持っているとしましょう:

recordArr[1] = [1 , 2 , 23]
recordArr[2] = [1 , 2 , 23]
recordArr[3] = [2 , 3 , 8]
recordArr[4] = [2 , 3 , 8]
recordArr[5] = [3 , 4 , 5]
recordArr[6] = [3 , 4 , 5]

私は次のような結果を検索しています:

SortRecordArray[23] = [2 , 4]
SortRecordArray[8] = [4 , 6]
SortRecordArray[5] = [6 , 8]

私がやろうとしていることをより明確に理解できることを願っています。

アドバイスありがとうございます、そして優しくしてください。

4

1 に答える 1

1

アイテムがオブジェクトに存在するかどうかを.hasOwnProperty()で確認する必要があります。

そして、これがあなたが必要とする編集されたコード全体です、

var recordArr = [];
var SortrRecordArr = [];

recordArr[1] = [1 , 2 , 23];
recordArr[2] = [1 , 2 , 23];
recordArr[3] = [2 , 3 , 8];
recordArr[4] = [2 , 3 , 8];
recordArr[5] = [3 , 4 , 5];
recordArr[6] = [3 , 4 , 5];

for(var key in recordArr){   
    if (!SortrRecordArr.hasOwnProperty(recordArr[key][2])) {
        SortrRecordArr[recordArr[key][2]] = [recordArr[key][0], recordArr[key][2]];
    } else {
        newValue = SortrRecordArr[recordArr[key][2]][0] + recordArr[key][0];
        newValueWithTax = SortrRecordArr[recordArr[key][2]][3] + recordArr[key][4];
        SortrRecordArr[recordArr[key][2]] = [newValue, newValueWithTax];
     }        
}

console.log(SortrRecordArr)
​

デモ

于 2012-08-09T13:14:13.123 に答える