私は非常に複雑な計算を手にしています。ここにあります。私は3つのテーブルを持っています。他のテーブルの列と比較して列データをインクリメントする
表1:(ID1と和は、テーブルの列です)
ID1 | Sum
123456 |
345678 |
表2:(市、ID2は、テーブルの列です)
City | ID2
NY | 123456
CA | 345678
TX | 12345
BF | 34567
表3:(市、ID3テーブルの列です)
City | ID3
LA | 123456
NB | 12345
表1の最終出力は次のとおりです。
表2と表3の値に応じて、表1には、私は最初のシナリオを説明します。この
ID1 | Sum
123456 | 4
345678 | 2
のようになります。私は 'Table1'の '合計'列を更新したいと思います。これは、 'Table1'の列 'ID1'の最初の5文字と 'Table2'の 'ID2'列と 'Table3'の 'ID3'列に存在する列データの最初の5文字とを比較することによって更新される。
Table1の '12345'(実際の値が '123456'であることに注目)をTable2とTable3の列データと比較します。 (表2及び表3は、入力の同様の形態である)
[Object][Object]
[0-1]
[0]: Object
ID1: '123456'
Sum:
[1]: Object
ID1: '345678'
Sum:
ソリューション - :従って合計は次の形式 表1にあるテーブルに最終表1
入力で4であることが出てきます試みた:
function count(key) {
return function (r, a) {
r[a[key]] = (r[a[key]] || 0) + 1;
return r;
};
}
Table1.forEach(function (a) {
a.Sum = this[a.ID1] || '-';
}, Table2.reduce(count('ID2'), Table3.reduce(count('ID3'), Object.create(null))));
上記の解決策は、ID1とID2とID3の値をそのまま比較します。私はデータの最初の5文字だけを使用して、上記のように比較したいと思います。誰かが私の問題を解決するためにコードをどのように編集する必要があるかを教えてもらえますか?
のみ2のテーブルがある場合こんにちは、これは解決策です。最初のテーブルが他の2つのテーブルに基づいて更新されている場合、ワット? – Rihana
@Rihana、あなたのコメントに基づいてコードを更新しました。それはあなたが尋ねたものなら私は確信していません。 – Searching
@ Searching-これは動作します。今私はこの答えを受け入れる前に、最後の質問が1つあります。テーブル2とテーブル3のどちらかが未定義で、テーブル2とテーブル3の両方が未定義の場合はどうなりますか? – Rihana