Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否有任何方法可以在java脚本中组合数组中的对以形成新数组_Javascript_Arrays - Fatal编程技术网

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)方法它能解决问题吗