Javascript 是否有任何方法可以在java脚本中组合数组中的对以形成新数组
我试图将任何类型的数组输入排列到一个排序数组中,该数组也将相等的对组合到同一数组中的数组中 我做以下几点Javascript 是否有任何方法可以在java脚本中组合数组中的对以形成新数组,javascript,arrays,Javascript,Arrays,我试图将任何类型的数组输入排列到一个排序数组中,该数组也将相等的对组合到同一数组中的数组中 我做以下几点 const arrangeTheArray=(arr)=> { //checking input here if(arr.length<2) { return arr; } else { //sorting the array arr= arr.sort();
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])
const arrangeTheArray=(arr)=>
{
//在这里检查输入
如果(arr.length您可以使用和
这是我的想法
- 首先创建一个对象,每个数字作为键,并按键对值进行分组
- 现在映射分组数据,如果元素的长度大于一个pass元素,则传递第0个索引值
let combine=(arr)=>{
让组=arr.reduce((op,inp)=>{
op[inp]=op[inp]| |[]
op[inp].推送(inp)
返回操作
},{})
让final=Object.values(groups.map)(e=>e.length>1?e:e[0])
返回决赛
}
console.log(组合([0,2,2,1,1,6,3,1,0]))
您可以使用数组。reduce
来累积对象中的公共元素
然后使用Object.values
和Array.from
将嵌套数组处理为公共元素和不同元素的数组:
const arrangeTheArray=(arr)=>{
如果(!Array.isArray(arr)&&arr.length<2){
返回arr;
}
常数对=arr.reduce((acc,ele)=>{
if(附件[ele]){
acc[ele]。推送(ele);
}否则{
acc[ele]=[ele];
}
返回acc;
}, {});
返回Array.from(Object.values(pairs),ele=>ele.length>1?ele:+ele.join()
}
console.log(arrangeTheArray([0,2,2,1,1,6,3,1,0]);
您可以通过回调对数组进行数字排序,并通过检查前一个p
和实际值v
来减少数组,然后按下最后一组的值或数组以及值
函数排列数组(数组){
返回数组
.sort((a,b)=>a-b)
.减少(
(r,v,i,{[i-1]:p}=>r.concat([p!==v?v:[].concat(r.pop(),v)]),
[]
);
}
log(排列排列排列([0,2,2,1,1,6,3,1,0]);
.as控制台包装{最大高度:100%!重要;顶部:0;}
非常感谢您的回答,它给出了所需的输出。不过,我在理解您的代码时遇到了一些困难。您能告诉我,我是否可以使用我的代码实现相同的输出吗instead@jsLearner你们可以告诉我你们在哪里面临的问题,了解这个问题会对你们有所帮助。等等,让我用你们的版本更新这个问题必须正确地阅读和理解reduce。我试图通过数组和for循环来实现这一点。到目前为止,我能够对数组甚至管理器进行排序,以组合几个对,但这并不能为所有输入提供正确答案。这项工作的最佳答案应该是您提到的第一种方法。我知道映射和筛选,但无法实现nk如果我们可以在这里使用它…必须经常学习编程逻辑我还在学习这看起来很好,谢谢你的答案必须阅读一次reduce方法。但是我们可以用for循环和我正在尝试的方法来做吗?你对大于9
的数字的排序出错,因为你对字符串而不是数字进行排序。有时我会ally搞乱了逻辑,所以通过使用sort(a,b=>returna-b)方法它能解决问题吗