0

SQL データベースからこのような値のリストがあります。

UserName  Email                  ComputerName      DateIssued
jjsmith   jjsmith@example.com    JTComputer        9/14/2013
ltjoseph  ltjoseph@example.com   LTComputer1       10/21/2013
KTsmith   KevinTem@example.com   KTComputer1       01/25/2012
ltjoseph  ltjoseph@example.com   LTComputer2       01/11/2013
KTsmith   KevinTem@example.com   KTComputer2       01/25/2012

リストをオブジェクトの配列に変換します。

   var user_array = [
{"username":"jjsmith",  "email":"jjsmith@example.com",   "computerName":"JTComputer",  "dateissued":"10/21/2013"}
{"username":"ltjoseph", "email":"ltjoseph@example.com",  "computerName":"LTComputer1", "dateissued":"10/21/2013"}
{"username":"KTsmith",  "email":"KevinTem@example.com",  "computerName":"KTComputer1", "dateissued":"01/25/2012"}
{"username":"ltjoseph", "email":"ltjoseph@example.com",  "computerName":"LTComputer2", "dateissued":"01/11/2013"}
{"username":"KTsmith",  "email":"KevinTem@example.com",  "computerName":"KTComputer2", "dateissued":"01/25/2012"}]

ユーザーに電子メールを送信する関数が他の誰かによって作成されました。この関数は、文字列である 2 つのパラメーターのみを受け入れます。そのため、ユーザーごとに複数のメールを送信したくありません。そのため、文字列のサンプル セットが次のようになるように、アイテムを組み合わせる方法を見つけようとしています。

var str1 = "ltjoseph@example.com";
var str2 = "ltjoseph, LTComputer1-10/21/2013, LTComputer2-01/11/2013";

次に、他のユーザー関数を起動して、リスト内の各アイテムの電子メールを送信します。

 function sendEmails(str1, str2); 

誰かが私がこれを行う方法を知っているなら。お知らせ下さい..

4

3 に答える 3

1
var by_user = {};
for (var i = 0; i < user_array.length; i++) {
    if (by_user[user_array[i].username]) {
        // Found user, add another computer
        by_user[user_array[i].username].str2 += ', ' + user_array[i].computerName + '-' + user_array[i].dateissued;
    } else {
        // First entry for user, create initial object
        by_user[user_array[i].username] = {
            str1: user_array[i].email,
            str2: user_array[i].username + ', ' + user_array[i].computerName + '-' + user_array[i].dateissued
        };
    }
}

これby_userで、ユーザーごとに 1 つのサブオブジェクトを持つオブジェクトができました。そのstr1str2プロパティは必要な変数です。

by_user['ltjoseph'].str1 => ltjoseph@example.com
by_user['ltjoseph'].str2 => ltjoseph, LTComputer1-10/21/2013, LTComputer2-01/11/2013
于 2013-09-20T18:41:16.587 に答える
0

この種のことのために lodash のようなライブラリを導入し、uniqを使用することを強くお勧めします(サンプルはこちら: http://jsfiddle.net/MwYtU/ ):

var uniqs = lodash(user_array).pluck('email').uniq().value();

JavaScript を使用していて、lodashまたはunderscoreに慣れていない場合は、時間を大幅に節約できるので、それを行ってください。実証済みの真のコードを使用することをお勧めします。追加のボーナス: プロがどのように何かを行っているかを見たい場合はuniq、ソースコードを見るだけです。

于 2013-09-20T21:05:21.007 に答える