我们有一个数字数组,其中有一些多余的条目,我们的工作是编写一个函数,该函数接受该数组并将所有相同的条目分组到一个子数组中,并返回由此形成的新数组。
例如-
//If the input array is: const arr = [1, 3, 3, 1]; //那么输出应该是: const output = [[1, 1], [3, 3]];
我们将使用HashMap来跟踪已发生的元素,并使用for循环遍历数组,其代码为-
const arr = [1, 3, 3, 1]; const groupArray = arr => { const map = {}; const group = []; for(let i = 0; i < arr.length; i++){ if(typeof map[arr[i]] === 'number'){ group[map[arr[i]]].push(arr[i]); } else { //push方法返回数组的新长度 //并且新推送元素的索引为length-1- map[arr[i]] = group.push([arr[i]])-1; } }; return group; } console.log(groupArray(arr));
输出结果
控制台中的输出将为-
[ [ 1, 1 ], [ 3, 3 ] ]