gpt4 book ai didi

javascript - 有什么方法可以在 java 脚本中组合数组中的对以形成一个新数组

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:53:27 26 4
gpt4 key购买 nike

我正在尝试将任何类型的数组输入排列到排序数组中,该数组还将相等的对组合到同一数组内的数组中。

我做了以下事情

const arrangeTheArray=(arr)=>
{
//checking input here
if(arr.length<2)
{
return arr;
} else {
//sorting the array
arr= arr.sort();
}
//displaying the sorted array
console.log(arr);
for(let i=1; i<arr.length;i++)
{
for(let j=0;j<i;j++)
{
//here I am looping and comparing the values of array
if(arr[j]===arr[i]){
//putting the value
arr[j]= [arr[i],arr[j]];
}
}
}
//displaying the final output
console.log(arr);
}
arrangeTheArray([0,2,2,1,1,6,3,1,0])

例如数组输入:[0,2,2,1,1,6,3,1,0] 最终输出:[[0,0],[1,1,1],[2,2],3,6]

最佳答案

您可以使用 reducemap .

思路是

  • 首先创建一个以每个数字为键的对象,并按键对值进行分组。
  • 现在映射到分组数据上,如果元素长度大于一个元素则原样传递,否则传递第0个索引值

let combine = (arr) =>{
let groups = arr.reduce((op,inp)=>{
op[inp] = op[inp] || []
op[inp].push(inp)
return op
},{})
let final = Object.values(groups).map(e=> e.length > 1 ? e : e[0])
return final
}

console.log(combine([0,2,2,1,1,6,3,1,0]))

const arrangeTheArray=(arr)=>{
if(arr.length<2)
{
return arr;
} else {
arr = arr.sort((a,b)=>a-b);
}
let final = []
for(let i=0;i<arr.length;i++){
let current = arr[i]
let j = i;
let temp = []
while(arr[j] === current){
temp.push(arr[j])
j++
}
i = j-1
temp = temp.length > 1 ? temp : temp[0]
final.push(temp)
}
console.log(final)
}
arrangeTheArray([0,2,2,1,1,6,3,1,0])

关于javascript - 有什么方法可以在 java 脚本中组合数组中的对以形成一个新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55325281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com