美文网首页
js数组-组建新的数据结构

js数组-组建新的数据结构

作者: GIDK | 来源:发表于2022-09-07 18:18 被阅读0次
let peopleList = [
    {
        name: '小明',
        age: 18,
        score: 98,
        id: 1,
        subjects: '语文'
    },
    {
        name: '小红',
        age: 17,
        id: 2,
        score: 92,
        subjects: '语文'
    },
    {
        name: '小明',
        age: 18,
        score: 91,
        id: 1,
        subjects: '数学'
    },
    {
        name: '小红',
        age: 18,
        id: 2,
        score: 89,
        subjects: '数学'
    },
    {
        name: '小刚',
        age: 19,
        score: 90,
        id: 3,
        subjects: '化学'
    },
    {
        name: '小蓝',
        age: 18,
        score: 68,
        id: 4,
        subjects: '语文'
    },
    {
        name: '小蓝',
        age: 18,
        score: 75,
        id: 4,
        subjects: '数学'
    },
]

// 1. 根据年龄进行排序
//答:
// function compare(property) {
//     return function (a, b) {
//         var value1 = a[property];
//         var value2 = b[property];
//         return value1 - value2;
//     }
// }
// console.log(peopleList.sort(compare("age")))


// 2. 根据科目进行分类,结构为 { 语文:[{},{}],数学:[{},{}]}
//答:
//方法1
// let param={}
// peopleList.map(ele=>{
//     if(!param[ele.subjects]){
//          param[ele.subjects]=[]
//     }
//     param[ele.subjects].push(ele)

// })

//方法2
// let param={}
// peopleList.map(ele=>{
//     if(!param.hasOwnProperty(ele.subjects)){
//          param[ele.subjects]=[]
//     }
//     param[ele.subjects].push(ele)

// })
// console.log(param)

// 3. 根据名字进行分组,结构为 
//[ [{name:'小明'},{name:'小明‘}], [ {name:'小红'}, {name:'小红'}] ]
//答:
let arrays = []
peopleList.map(item => {
    if (!arrays.length) {
        let arr = [item]
        arrays.push(arr) // [ [{name:'小明'}],[ {name:'小红‘} ] ]
    } else {
        let flag = arrays.findIndex(i => i[0].name == item.name)
        if (flag != -1) {
            arrays[flag].push(item)
        } else {
            arrays.push([item])
        }
    }
})
  console.log(arrays, 'arrays')

// 4. 将数据格式转换成下面的形式 根据id构造学生的科目明细表
// const aa = [
//     {
//         name:'小明',
//         age:18,
//         id:1,
//         list:[
//             {
//                 score:98,
//                 subjects:'语文'
//             },
//             {
//                 score:91,
//                 subjects:'数学'
//             }
//         ]
//     }
// ]

//答:
// const arr = []
// peopleList.map(ele => {
//     const arrLine = {
//         name: ele.name,
//         age: ele.age,
//         id: ele.id,
//         list: [{
//             score: ele.score,
//             subjects: ele.subjects
//         }]
//     }
//     if (arr.length) {
//         const find = arr.find(e => {
//             return ele.id === e.id
//         })
//         if (find) {
//             find.list.push({
//                 score: ele.score,
//                 subjects: ele.subjects
//             })
//         } else {
//             arr.push(arrLine)
//         }
//     } else {
//         arr.push(arrLine)
//     }
// })
// console.log(arr)

相关文章

  • js数组-组建新的数据结构

  • js中数组操作2(那些迭代器方法)

    最近在看js描述的数据结构记录一下js数组操作中的一些方法 大致分为两类吧,一种是产生新数组、另一种是不产生新数组...

  • JavaScript 中的稀疏数组

    前言 最近有空在看一本关于 JS 数据结构和算法的书,里面有提到数组,却对数组的基本概念轻轻带过,虽然用了 JS ...

  • JavaScript中的Array、Set和Map

    数组、Set和Map比较 都是JavaScript的数据结构 Set是ES6提供的新的数据结构, 类似于数组, 但...

  • 第2章 数组

    数组是最简单的内存数据结构,几乎所有编程语言都原生支持数组类型,尽管 JS 数组中可以保存不同类型的值,但像其他语...

  • 前端零基础课程--第十二节课(数组)

    数组 数组是一种常用的保存批量数据的数据结构。 JS中数组元素类型可以不同 元素按线性顺序排列 可以通过元素所在位...

  • es6-iterator

    好记性不如烂笔头 参考文档 JS 中表示集合的数据结构:对象、数组、Map、Set。 iterator: 遍历器,...

  • 数组去重

    整理自js中基础数据结构数组去重问题思考?如何去除数组中重复的项 例如数组:[1,3,4,3,5]我们在做去重的时...

  • 优质的 Vue 开源项目

    Vuetify - Vue.js 2.0 组建库 Material Design 的前端组建库,基于 Vue.js...

  • 数据结构:数组

    00数据结构与算法分析:大纲01数据结构:数组02数据结构:链表03数据结构:栈03数据结构:队列 数组 数组是一...

网友评论

      本文标题:js数组-组建新的数据结构

      本文链接:https://www.haomeiwen.com/subject/txggnrtx.html