Javascript 如何使用lodash对嵌套数组进行排序

Javascript 如何使用lodash对嵌套数组进行排序,javascript,lodash,Javascript,Lodash,我在这个数组中有一个对象集合,我需要按“order”键asc对它们进行排序。有没有办法对数组中的对象进行排序,然后返回整个数组?我依赖于订单,因为我在v-for中使用的是:键 [ { "id":0, "type":"Header", "order":1, "props":{ "order":0, "id":0, "section_id":0

我在这个数组中有一个对象集合,我需要按“order”键asc对它们进行排序。有没有办法对数组中的对象进行排序,然后返回整个数组?我依赖于订单,因为我在v-for中使用的是:键

[
    {
        "id":0,
        "type":"Header",
        "order":1,
        "props":{
            "order":0,
            "id":0,
            "section_id":0
        },
        "data":{
            "header":""
        },
        "component":"header-block"
    },
    {
        "id":1,
        "type":"Header",
        "order":0,
        "props":{
            "order":1,
            "id":1,
            "section_id":0
         },
         "data":{
            "header":""
         },
         "component":"header-block"
    }
],
[
    //Another collection of objects
]
我目前正在这样做-

getters: {
        sorted: state => {
            return _.orderBy(state.experience_sections, function(block) {
                if(block.experience_blocks[0]) {
                    return block.experience_blocks[0].order;
                }
            });
        }
    }
上述解决方案似乎没有按“asc”顺序对对象进行排序。我走对了吗

谢谢


p.S.Stack告诉我这可能是一个重复的问题,但经过几个小时的搜索,我不知所措。如果我错过了一个已经回答过的问题,我深表歉意。

以防您需要简单的javascript解决方案。。使用Array.forEach

我还扩展了您的数组以包含更多数据

var arr=[[ { id:0, 类型:标题, 订单:1, 道具:{ 订单:0, id:0, 节id:0 }, 数据:{ 标题: }, 组件:标题块 }, { id:1, 类型:标题, 订单:0, 道具:{ 订单:1, id:1, 节id:0 }, 数据:{ 标题: }, 组件:标题块 } ], [ { id:0, 类型:标题, 订单:2, 道具:{ 订单:0, id:0, 节id:0 }, 数据:{ 标题: }, 组件:标题块 }, { id:1, 类型:标题, 订单:1, 道具:{ 订单:1, id:1, 节id:0 }, 数据:{ 标题: }, 组件:标题块 } ]] arr.forEachd=>d.sorta,b=>a.order-b.order
logarr以防您需要纯javascript解决方案。。使用Array.forEach

我还扩展了您的数组以包含更多数据

var arr=[[ { id:0, 类型:标题, 订单:1, 道具:{ 订单:0, id:0, 节id:0 }, 数据:{ 标题: }, 组件:标题块 }, { id:1, 类型:标题, 订单:0, 道具:{ 订单:1, id:1, 节id:0 }, 数据:{ 标题: }, 组件:标题块 } ], [ { id:0, 类型:标题, 订单:2, 道具:{ 订单:0, id:0, 节id:0 }, 数据:{ 标题: }, 组件:标题块 }, { id:1, 类型:标题, 订单:1, 道具:{ 订单:1, id:1, 节id:0 }, 数据:{ 标题: }, 组件:标题块 } ]] arr.forEachd=>d.sorta,b=>a.order-b.order
logarr将对数组中的每个子数组进行排序

const sortedArr = _.map(arr, subArray => _.sortBy(subArray, "order"));

将对阵列中的每个子阵列进行排序

const sortedArr = _.map(arr, subArray => _.sortBy(subArray, "order"));

您还应该考虑LADASH的方法,因为如果您想在以后的日期或通过一个通过UI等变量的变量,可以轻松地从ASC变为DESC排序:

const data=[{id:0,type:Header,order:1,props:{order:0,id:0,section\u id:0},data:{Header:},component:Header block},{id:1,type:Header,order:0,props:{order:1,id:1,section\u id:0},data:{Header:},component:Header block},{id:0,type:Header,order:2,props:{order:0,order:0,section\u-id:0,data:{header:},component:header block},{id:1,type:header,order:1,props:{order:1,id:1,section\u id:0},数据:{header:},component:header block}]] console.log'asc:',u.mapdata,x=>u.orderByx,'order'//asc order console.log'desc:',u.mapdata,x=>u.orderByx,'order','desc'//desc

您还应该考虑LADASH的方法,因为如果您想在以后的日期或通过一个通过UI等变量的变量,可以轻松地从ASC变为DESC排序:

const data=[{id:0,type:Header,order:1,props:{order:0,id:0,section\u id:0},data:{Header:},component:Header block},{id:1,type:Header,order:0,props:{order:1,id:1,section\u id:0},data:{Header:},component:Header block},{id:0,type:Header,order:2,props:{order:0,order:0,section\u-id:0,data:{header:},component:header block},{id:1,type:header,order:1,props:{order:1,id:1,section\u id:0},数据:{header:},component:header block}]] console.log'asc:',u.mapdata,x=>u.orderByx,'order'//asc order console.log'desc:',u.mapdata,x=>u.orderByx,'order','desc'//desc 用lodash进行深度分选

用lodash进行深度分选


砰的一声!!返回新数组在这里没有任何好处..所以yes forEach可以在这里使用..砰的一声!!返回新数组在这里没有任何好处..所以yes forEach可以在这里使用。。。