数组算法问题求解

遇到一个算法;类似 var a= [1,2,3,4,4 ,5,5,5] 怎么处理成二位数组[[1],[2],[4,4],[5,5,5]]
我自己写的:额。。。循环两次,不太好

var a= [1,2,3,4,4,5,5,5];
    var obj = {};
    var arr = [];
    for(var i = 0; i<a.length; i++) {
        if(!obj[a[i]]){
            obj[a[i]] = [];
        }
        obj[a[i]].push(a[i]);
    }
    for(var i in obj){
        arr.push(obj[i]);
    }
    console.log(arr);
阅读 1.7k
3 个回答

排序后 一遍循环就行

let a= [1,2,3,4,4,5,5,5];
let a2 = []
for(let i=0;i<a.length;i++){
    if(i==0||a[i]!=a[i-1]){
        a2.push([])
    }
    a2[a2.length-1].push(a[i])
}
var arr = [1,2,3,4,4 ,5,5,5]

var ret = []
var prev = [arr[0]]
for (let i = 1; i < arr.length; i++) {
  if (arr[i] === prev[0]) {
    prev.push(arr[i])
  } else {
    ret.push(prev)
    prev = [arr[i]]
  }
}
ret.push(prev)
test = [1,2,3,4,4,5,5,5]
res = dict()
for i in test:
  if not res.has_key(i):
    res[i] = []
  res[i].append(i)

print res.values()
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题