更新 以下是我使用 axios 通过 API 获取的 json。
bannerData= [
{
"id": 118,
"title": "Geruchsbel\u00e4stigung",
"location": "DOR",
"pressInformation": [
{
"id": 257,
"title": "Chemi257"
},
{
"id": 256,
"title": "Chemi256",
}
]
},
{
"id": 144,
"title": "Testing Stage",
"location": "LEV",
"pressInformation": [
{
"id": 254,
"title": "Chemi254",
},
{
"id": 261,
"title": "Chemi261",
}
]
}
]
computed: {
orderedUsers: function() {
this.secondSubBanner = [];
for (let i = 0; i < this.bannerData.length; i++) {
this.subBanner = this.bannerData[i].pressInformation;
for (let j = 0; j < this.subBanner.length; j++) {
this.secondSubBanner.push(this.subBanner[j].id);
console.log(this.secondSubBanner); // output: 257, 256, 254,261
}
}
return this.secondSubBanner;
},
sortedArray() {
let v = this.orderedUsers.sort();
console.log(v); // output: 254, 256, 257, 261
return _.orderBy(this.bannerData, v)
}
sortedArray 使用 sort() 按顺序打印 ID。但它无法对 Json 属性进行排序,具体取决于使用 _.orderBy()
。谁能说我哪里做错了?
最佳答案
试试这个算法。我想有了你想要的东西,你不需要 lodash
。我只使用内置的 flatMap()
和 sort()
来得到这个:
function sortedArray(bannerData) {
const array = bannerData.flatMap(x => x.pressInformation)
return array.sort( (a,b) => a.id - b.id )
}
bannerData = [
{
"id": 118,
"title": "Geruchsbel\u00e4stigung",
"location": "DOR",
"pressInformation": [
{
"id": 257,
"title": "Chemi257"
},
{
"id": 256,
"title": "Chemi256",
}
]
},
{
"id": 144,
"title": "Testing Stage",
"location": "LEV",
"pressInformation": [
{
"id": 254,
"title": "Chemi254",
},
{
"id": 261,
"title": "Chemi261",
}
]
}
]
console.log(sortedArray(bannerData))
关于javascript - Vuejs _.orderBy 没有对 json 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59457802/