js按照数组中的某个字段进行分组

JavaScript018

js按照数组中的某个字段进行分组,第1张

const groupBy = (array, f) =>{

    let groups = {}

    array.forEach(function (o) {

        var group = JSON.stringify(f(o))

        groups[group] = groups[group] || []

        groups[group].push(o)

    })

    return Object.keys(groups).map(function (group) {

        return groups[group]

    })

}

const arrayGroupBy = (list, groupId) =>{

    let sorted = groupBy(list, function (item) {

        return [item[groupId]]

    })

    return sorted

}

arrayGroupBy(数组, '字段名称')

其实只是进行了默认隐藏了。调出分组选项的方法也很简单,在编辑页面按住便签向下拉动,在顶部就出现了便签分组选项,同时也可以对便签添加单独的标题哦。

至于便签的加密,则是一个特殊分组“加密”,将便签加入这个分组就需要密码才可打开,而密码就是你的Flyme账户密码!

便签修改标题:在便签主界面点击某条便签,进入详情界面,再向下滑动屏幕,拉出标题栏,点击标题栏左侧,可以修改便签的标题

若后台返回格式如下:

let data = [

    {"createdAt": "2020-08-02T11:00:24.580Z", "name": "西瓜"},

    {"createdAt": "2020-08-03T11:00:24.580Z", "name": "水蜜桃"},

    {"createdAt": "2020-08-03T11:00:24.580Z", "name": "樱桃"},

    {"createdAt": "2020-08-02T11:00:24.580Z", "name": "西柚"},

]

      方法:使用 dayjs(createdAt).format('YYYY-MM-DD') 转换

      注:dayjs 安装引用

             npm install dayjs --save     import dayjs from 'dayjs'

     for ( let i=0i<array.lengthi++ ) {      

            let createdAt = dayjs(array[i].time)

            array[i].createdAt = createdAt

    }

 mapName (array) {

          let newArray = []

          array.forEach((item, i) =>{

              let index = -1

              let alreadyExists = newArray.some((newItem, j) =>{

                  if (item.createdAt === newItem.createdAt) {

                      index = j

                      return true

                  }

              })

              if (!alreadyExists) {

                  newArray.push({

                      createdAt: item.createdAt,

                      name: [item.name]

                  })

              } else {

                  newArray[index].price.push(item.name)

              }

          })

          return newArray

      }