js 數組分組


 

 

 

 
function group(arr, step) {
    return arr.reduce((x, y) => {
        return Array.isArray(x) ? (x[x.length - 1].push(y) == step ? [...x, []] : x) : [[x, y]];
    })
}
group([1, 2, 3, 4, 5, 6, 7, 8, 9, 0],3)

 

 function group(arr, step) {
            function copyPush(v, item) {
                var res = [];
                for (var i = 0; i < v.length; i++) {
                    res.push(v[i]);
                }
                res.push(item);
                return res;
            }

            return arr.reduce(function(x, y){
                return Array.isArray(x) ? (x[x.length - 1].push(y) == step ? copyPush(x,[]) : x) : [[x, y]];
            })
        }
        //group([1, 2, 3, 4, 5, 6, 7, 8, 9, 0],3)

 補1

[
  { name: "張三1", age: 13 },
  { name: "張三2", age: 13 },
  { name: "張三3", age: 13 },
  { name: "張三4", age: 14 },
  { name: "張三5", age: 14 },
  { name: "張三6", age: 14 },
  { name: "張三7", age: 15 }
].reduce(
  (a, b) => {
    var item = a.filter(x => x[0] && x[0].age == b.age)[0];
    item ? item.push(b) : a.push([b]);
    return a;
  },
  []
);

  

 補2

 

function group(arr, key) {
  if (!arr || !key) return arr;
  return arr.reduce((a, b) => {
    let k = key(b),
      item = a.filter(x => x._key === k)[0] || [];
    return (item._key = k), item.length || a.push(item), item.push(b), a;
  }, []);
}

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM