繁体   English   中英

如何对 javascript 中的嵌套数组进行排序

[英]how to sort nested array in javascript

我正在尝试对这种类型的数组进行排序,我在下面给出了预期的 output 任何人都可以告诉我我该怎么做我知道单个数组排序但不知道嵌套数组谁可以帮助我......

var list = [
{name: "Bob" , item : [ {price:500},{price: 302} ]}, 
{name: "Tom" ,item : [  {price: 200} ,{price: 600}] },
 
];
expected output// price:200
              // price:302
              // price:500
              // price:600

//为普通数组尝试了一些事情如何为这种类型的数组做些什么

list.sort(function(a, b) {
return ((a.name < b.name) ? -1 : ((a.name == b.name) ? 0 : 1));
});

for (var i = 0; i<list.length; i++) {
alert(list[i].name + ", " + list[i].age);
}

你可以使用下划线。

_.chain(list).map((item) => item.item).flatten().pluck('price').sort().value()

Output:

[200, 302, 500, 600]

或者如果你想保留密钥:

_.chain(list).map((item) => item.item).flatten().sort((a,b) => a.price - b.price).value()

Output:

0: {price: 200}, 1: {price: 302}, 2: {price: 500}, 3: {price: 600}

 var list = [ { name: "Bob", item: [{ price: 500 }, { price: 302 }] }, { name: "Tom", item: [{ price: 200 }, { price: 600 }] }, ]; let sortThePrices = []; list.forEach((e) => { e.item.forEach((prop) => { sortThePrices.push(prop.price); }); }); sortThePrices.sort((a, b) => a - b); sortThePrices.forEach((price) => { console.log("Price: " + price); });

我试图使这个问题的解决方案易于理解,我希望这会有所帮助

 var list = [ {name: "Bob", item: [ {price:500},{price: 302} ]}, {name: "Tom",item: [ {price: 200},{price: 600}] }, ]; const compare = ( a, b ) => { if ( a.price < b.price ){ return -1; } if ( a.price > b.price ){ return 1; } return 0; } list.map(val => val.item.sort(compare)) console.log("list: ", list)

希望这对你有用!

您需要这两个 forEach() 循环和一个 sort()。

 const list = [ {name: "Bob", item: [ {price:500},{price: 302} ]}, {name: "Tom",item: [ {price: 200},{price: 600}] }, ]; const n = [] list.forEach(i => i.item.forEach(p => { n.push(p.price) })) console.log('sorted array: ',n.sort())

flatMap 是解决这类问题的更好方案

let liMap = list.flatMap(x => [x.item]).flat().flatMap(y => [y.price])
liMap.sort().map(e => {
    console.log(`price:${e}`)
})

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM