連想配列で重複を避けながら整形したいです。以下のようなoriginalArrを
0. key2を重複をなくして配列にし
0. key1も重複をなくす配列に
0. key2をkeyにvalueを 2.のkey1にする
そして下記のようなコードを作成して、一応動かせます。
ただ、もっと簡単にメソッドなんか使ってシンプルに書きたいです。
コード改善をお願いします。
javascript
1const originalArr = [ 2 { 3 "key1":"shiba", 4 "key2":"dog"}, 5 { 6 "key1":"shiba", 7 "key2":"dog"}, 8 { 9 "key1":"akita", 10 "key2":"dog"}, 11 { 12 "key1":"mike", 13 "key2":"cat"}, 14 { 15 "key1":"mike", 16 "key2":"cat"} 17]; 18const reduceArr = []; 19//reduceでなくてもいいかも? 20const reduce = originalArr.reduce(function(result, current){ 21 return reduceArr.push(current.key2); 22},0); 23const reduceObj = new Set(reduceArr); // 重複排除 24const uniqueArr = Array.from(reduceObj); // obj=>arr 25const doneArr = []; //実行後の配列 26let key2; 27for(let i=0; i<uniqueArr.length; i++){ 28 const finalArrBefore = []; 29 originalArr.forEach(el=>{ 30 const key1 = el['key1']; // inu or neko 31 const elKey2 = el["key2"]; // dog or cat 32 key2 = uniqueArr[i]; //[dog, cat] 33 if (elKey2==key2){ 34 finalArrBefore.push(key1) 35 } 36 }) 37 const finalObj = new Set(finalArrBefore); //重複排除 38 const finalArr = Array.from(finalObj); // obj=>arr 39 const obj = { 40 key2: key2, 41 key1: finalArr 42 }; 43 doneArr.push(obj); 44} 45console.log(doneArr); 46/* 47[ 48 { key2: 'dog', key1: [ 'shiba', 'akita' ] }, 49 { key2: 'cat', key1: [ 'mike' ] } 50] 51*/
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/08/21 12:27
2021/08/21 12:35