数组排序

如何把[1,1,1,2,2,2,3,3,3] 变成[[1,1,1],[2,2,2],[3,3,3]]


方法1

var arr = [1,1,1,2,2,2,3,3,3];

var temp = new Array;

var result = new Array;

temp.push(arr[0]);

for (var i = 1; i<arr.length; i++) {

  var flag = 0;

  for(var j = 0; j<temp.length; j++){

      if (arr[i] == temp[j]) {

      flag = 1;

      break;

      }

  }

  if (flag == 0) {

    temp.push(arr[i]);

  }

}

for (var i = 0; i<temp.length; i++){

  var array1 = new Array;

  var count = 0;


  for(var j = 0; j<arr.length; j++){

      if (arr[j] == temp[i]) {

      array1.push(arr[j]);

      count++;

      }

  }

  if (count>1) {

  result.push(array1);}

  else{

  result.push(temp[i]);

  }

}

console.log("result",result);




方法2

let arr = [1,1,1,2,2,2,3,3,3],

    arr2 = [],

    obj = {},

    index = 0;

  arr.map(function (item) {

    if(obj[item] === undefined){

      obj[item] = index++;

      arr2.push([item]);

    }else{

      arr2[obj[item]].push(item)

    }

  })

  console.log(arr2)





方法3

arr.map( (item) => {

    if (!!obj[item]) {

        // 如果已存在,直接存入

        arr2[obj[item]].push(item)

    } else {

        // 如果不存在,在索引对象中创建索引,根据索引创建数组

        obj[item] = arr2.length

        arr2[obj[item]] = [item]

    }

})




方法4

arr.map( item => obj[item] ? arr2[obj[item]].push(item) : arr2[obj[item] = arr2.length] = [item])

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数组排序在日常编程中用到的其实还是比较多的,比如把一组数据按时间排序,按首字母排序,按大小排序等等,那么就让我们一...
    一木_qintb阅读 14,460评论 1 2
  • 数组排序在日常编程中用到的其实还是比较多的,比如把一组数据按时间排序,按首字母排序,按大小排序等等,那么就让我们一...
    xueNoble阅读 6,430评论 0 9
  • 1.用js实现随机选取10~100之间的10个数字,存入一个数组,并排序 //要是获取不重复的,则对随机数...
    persistlu阅读 10,936评论 0 0
  • 一. js的sort()方法 sort() 方法用于对数组的元素进行排序,同时需要一个额外的排序函数sortNum...
    tcz520阅读 6,934评论 0 3
  • 数组:内存中连续存储多个变量的存储空间, 一、声明数组: 1.声明一个空数组 var arr=[]; var ar...
    纪美阅读 4,492评论 0 1