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