Javascript 将数组排序为新的二维数组 [ { “id”:3401, “联盟”:{ “id”:4140, “image_url”:“pngurl.png”, “修改时间”:“2019-02-19T15:29:07Z”, “名称”:“联赛杯”, “鼻涕虫”:“联盟鼻涕虫”, “url”:空 } } ]
我在数组中有很多这样的对象。我如何对数组进行排序/格式化,这样我就得到了一个新的数组/字典,其中的对象按Javascript 将数组排序为新的二维数组 [ { “id”:3401, “联盟”:{ “id”:4140, “image_url”:“pngurl.png”, “修改时间”:“2019-02-19T15:29:07Z”, “名称”:“联赛杯”, “鼻涕虫”:“联盟鼻涕虫”, “url”:空 } } ],javascript,arrays,typescript,Javascript,Arrays,Typescript,我在数组中有很多这样的对象。我如何对数组进行排序/格式化,这样我就得到了一个新的数组/字典,其中的对象按“id”的值排序,在“league”中,示例是4140。现在我有了一个普通数组,但我想要一些按键值排序的东西,比如4140:[来自联盟id为4140的数组的对象]或2d数组排序[[包含联盟id为4140的所有对象的数组],[包含联盟id为4141的对象的数组],等等]。我需要使用map或类似的东西吗?我对Javascript非常陌生 下面是我希望在代码中得到的内容 //这就是我最终想要得到的。
“id”
的值排序,在“league”
中,示例是4140
。现在我有了一个普通数组,但我想要一些按键值排序的东西,比如4140:[来自联盟id为4140的数组的对象]或2d数组排序[[包含联盟id为4140的所有对象的数组],[包含联盟id为4141的对象的数组],等等]
。我需要使用map
或类似的东西吗?我对Javascript非常陌生
下面是我希望在代码中得到的内容
//这就是我最终想要得到的。。。
[
{
“联赛”:“联赛杯”,
“锦标赛”:[
{
“id”:3402,
“联盟”:{
“id”:4141,
“image_url”:“pngurl.png”,
“修改时间”:“2019-02-19T15:29:07Z”,
“名称”:“联赛杯”,
“鼻涕虫”:“联盟鼻涕虫”,
“url”:空
}
},
{
“id”:3403,
“联盟”:{
“id”:4141,
“image_url”:“pngurl.png”,
“修改时间”:“2019-02-19T15:29:07Z”,
“名称”:“联赛杯”,
“鼻涕虫”:“联盟鼻涕虫”,
“url”:空
}
}
]
},
{
“联赛”:“联赛杯2”,
“锦标赛”:[
{
“id”:3401,
“联盟”:{
“id”:4145,
“image_url”:“pngurl.png”,
“修改时间”:“2019-02-19T15:29:07Z”,
“名称”:“联赛杯2”,
“鼻涕虫”:“联盟鼻涕虫”,
“url”:空
}
},
{
“id”:3405,
“联盟”:{
“id”:4145,
“image_url”:“pngurl.png”,
“修改时间”:“2019-02-19T15:29:07Z”,
“名称”:“联赛杯2”,
“鼻涕虫”:“联盟鼻涕虫”,
“url”:空
}
}
]
}
]
您需要循环浏览它,并根据您的联盟id将它们分组到一个新对象中
例如:
const output = {};
const input = [
{
"id": 1,
"league": {
"id": 7,
"image_url": "pngurl.png",
"modified_at": "2019-02-19T15:29:07Z",
"name": "League Cup",
"slug": "league-slug",
"url": null
}
},
{
"id": 2,
"league": {
"id": 7,
"image_url": "pngurl.png",
"modified_at": "2019-02-19T15:29:07Z",
"name": "League Cup",
"slug": "league-slug",
"url": null
}
},
{
"id": 3,
"league": {
"id": 8,
"image_url": "pngurl.png",
"modified_at": "2019-02-19T15:29:07Z",
"name": "League Cup",
"slug": "league-slug",
"url": null
}
}
];
input.forEach(x => {
if (!output[x.league.id]) {
output[x.league.id] = [];
}
output[x.league.id].push(x);
});
要对对象数组进行排序,应使用数组的sort()函数
var-yourray=[{
“id”:3401,
“联盟”:{
“id”:4140,
“image_url”:“pngurl.png”,
“修改时间”:“2019-02-19T15:29:07Z”,
“名称”:“联赛杯”,
“鼻涕虫”:“联盟鼻涕虫”,
“url”:空
}
},
{
“id”:3405,
“联盟”:{
“id”:4145,
“image_url”:“pngurl.png”,
“修改时间”:“2019-02-19T15:29:07Z”,
“名称”:“联赛杯”,
“鼻涕虫”:“联盟鼻涕虫”,
“url”:空
}
},
{
“id”:3402,
“联盟”:{
“id”:4143,
“image_url”:“pngurl.png”,
“修改时间”:“2019-02-19T15:29:07Z”,
“名称”:“联赛杯”,
“鼻涕虫”:“联盟鼻涕虫”,
“url”:空
}
}
]
yourArray.sort((a,b)=>{
if(a.league.idb.league.id){
返回1;
}
返回0;
})
//输出将按数组排序
log(数组)代码>使用映射
并对每个对象应用排序
。锦标赛
const排序=(arr)=>
方位图((obj)=>({
…obj,
tournaments:obj.tournaments.sort((a,b)=>a.id-b.id),
}));
常数数据=[
{
联赛:“联赛杯”,
比赛:[
{
身份证号码:3403,
联盟:{
身份证号码:4141,
图片地址:“pngurl.png”,
修改位置:“2019-02-19T15:29:07Z”,
名称:“联赛杯”,
鼻涕虫:“联盟鼻涕虫”,
url:null,
},
},
{
id:3401,
联盟:{
身份证号码:4141,
图片地址:“pngurl.png”,
修改位置:“2019-02-19T15:29:07Z”,
名称:“联赛杯”,
鼻涕虫:“联盟鼻涕虫”,
url:null,
},
},
],
},
{
联赛:“联赛杯2”,
比赛:[
{
身份证号码:3405,
联盟:{
身份证号码:4145,
图片地址:“pngurl.png”,
修改位置:“2019-02-19T15:29:07Z”,
名称:“联赛杯2”,
鼻涕虫:“联盟鼻涕虫”,
url:null,
},
},
{
id:3401,
联盟:{
身份证号码:4145,
图片地址:“pngurl.png”,
修改位置:“2019-02-19T15:29:07Z”,
名称:“联赛杯2”,
鼻涕虫:“联盟鼻涕虫”,
url:null,
},
},
],
},
];
console.log(已排序(数据))代码>请再添加一些数据、想要的结果和您的尝试。您可以根据需要添加一部分代码吗?我们需要更多的信息:)