したがって、電子メールアドレスが同じである場所をマージするために、重複する値 (以下に示す) を持つ 2D 配列を作成したいと考えています。メールは常に同じ位置にあります。
[['john.doe@example.com', 64], ['john.doe@example.com', 65], ['jane.doe@example.com', 66]]
私の希望は、次の結果が得られることです。
[['john.doe@example.com', 64, 65], ['jane.doe@example.com', 66]]
配列に大量の値が含まれるとは思わないので、答えが非常に効率的でない場合、それは問題ではありません。
編集:
これは私が試したもので、うまくいきました。
誰かが以前にこの回答を投稿しましたが、私はそれがとても気に入りましたが、その後削除されました。だから私はそれを投稿して、他の人がどう思うか見てみましょう。私は小道具を取りません!
var a = [['john.doe@example.com', 64], ['john.doe@example.com', 65], ['jane.doe@example.com', 66]];
var map = {};
for(var i=0; i<a.length; i++) {
if(a[i][0] in map) {
map[a[i][0]].push(a[i][1]);
} else {
map[a[i][0]] = [a[i][1]];
}
}
console.log(map);
この最初の部分は、重複を実際に削除し、配列内の数値を持つオブジェクトに変換します。
a.length = 0;
for(var p in map) {
a.push([p].concat(map[p]));
}
console.log(a);
この 2 番目の部分はオプションです。オブジェクトを配列に変換します。
誰がこれを投稿したかはわかりませんが、私はこれが行われた方法が好きでした.