收藏
回答

大佬好!将数组元素按条件一维转(push)二维,如何能有更优解?

大佬们好,如代码所示,想要按条件将一维数组按条件转换成二维数组,请问以下代码有没有更好的(更简洁的)解决方法?


首先谢谢 @Admin 2020哥的回答,我找到更好的方法了。嘿嘿。。。。

好点的解决方法

var nameList = ['<5''<10''>10']
    var detailList = []
    var emptyList = []
    var list = [13574910111213]
    var lt5 = list.filter(item=>{return item<5})
    var lt10 = list.filter(item=>{return item<10})
    var mt10 = list.filter(item=>{return item>10})
    emptyList.push(lt5,lt10,mt10)
    for(var i in nameList){
      detailList.push({name:nameList[i],detailArr:emptyList[i]})
    }
    console.log(detailList)


问题

var nameList = ['<5''<10''>10']
    var detailList = []
    var emptyList = []
    var list = [13574910111213]

    for (var i in nameList) {
      detailList.push({ name: nameList[i], detailArr: [] })
      emptyList.push([])
    }
    for(var i in list){
      if(list[i]<5){
        emptyList[0].push(list[i])
      }
      if(list[i]<10){
        emptyList[1].push(list[i])
      }
      if(list[i]>10){
        emptyList[2].push(list[i])
      }
    }
    for(var i in detailList){
      detailList[i].detailArr = emptyList[i]
    }
    console.log('detailList',detailList)
-----------------------------------------------------
[{name: "<5", detailArr: [1,3,4]},
{name: "<10", detailArr: [1,3,5,7,4,9]},
{name: ">10", detailArr: [11,12,13]}]
最后一次编辑于  2020-03-02
回答关注问题邀请回答
收藏

1 个回答

  • Admin²⁰²¹
    Admin²⁰²¹
    2020-03-02

    谢邀:

    你这代码可以的。很好了

    第二个if可以直接else吧?

    另外貌似直接xxx[]=yyy;效率比push高?

    当然,数组量不大的情况下没区别。

    2020-03-02
    有用 2
    回复 5
    • 拎包哥
      拎包哥
      2020-03-02
      多谢Admin大佬,可能我意思表达得不够清楚,我修改了一下,请您看看还能如何改进?谢谢!
      2020-03-02
      回复
    • 拎包哥
      拎包哥
      2020-03-02
      Admin哥我找到方法了,嘿嘿谢谢哟。。
      2020-03-02
      回复
    • Admin²⁰²¹
      Admin²⁰²¹
      2020-03-03回复拎包哥
      你新的这个方法,看起来代码简洁了,其实效率很差的。你filter一次就循环一次完整的数组,filter3次就3次循环。而原来的方法只需一次。
      2020-03-03
      回复
    • Admin²⁰²¹
      Admin²⁰²¹
      2020-03-03回复Admin²⁰²¹
      咱不知道filter的具体实现过程,但是应该会遍历数组每一个值吧,不然怎么判断呢。3个filter就要遍历+判断三次。以后N个就要遍历N次吧?效率和性能都有应该是成倍的下降的。想想原理应该是这样。
      2020-03-03
      回复
    • 拎包哥
      拎包哥
      2020-03-03
      有道理,我再去温习一下这方面知识先哈哈哈!
      2020-03-03
      回复
登录 后发表内容
问题标签