例: 現在、2 つの配列があります。
期待: 配列 2 は配列 1 の順序に従って並べ替えられる必要があります。
数组一:
let showArr = [2, 4, 1, 3]
// 数组二:
let options = [{
id: 1,
name: '北京'
}, {
id: 2,
name: '上海'
}, {
id: 3,
name: '深圳'
}, {
id: 4,
name: '杭州'
}];
アイデア: 2 つの配列をソートするのは少し難しいです。1 つの配列にソートできれば便利です。
新しい並べ替え属性 sordId を各オプション配列オブジェクトに追加します。この sordId の値は、showArr 内のオプション ID のインデックス位置です。
let showArr = [2, 4, 1, 3]
options.forEach(item=>{
let sortId = showArr.indexOf(item.id)
item.sortId = sortId
})
最終実装: オプション配列を並べ替えられるようになりました
別の配列を書き込みますオブジェクト配列:属性名で並べ替え
//按照prop属性升序排序
function sort(prop) {
return function (obj1, obj2) {
var val1 = obj1[prop]
var val2 = obj2[prop]
if (!isNaN(Number(val1)) && !isNaN(Number(val2))) {
val1 = Number(val1)
val2 = Number(val2)
}
if (val1 < val2) {
return -1
} else if (val1 > val2) {
return 1
} else {
return 0
}
}
}
// 数组一
let showArr = [2, 4, 1, 3]
// 数组二
let options = [{
id: 1,
name: '北京'
}, {
id: 2,
name: '上海'
}, {
id: 3,
name: '深圳'
}, {
id: 4,
name: '杭州'
}];
options.forEach(item=>{
let sortId = showArr.indexOf(item.id)
item.sortId = sortId
})
let sortArr = options.sort(sort('sortId'))
console.log(sortArr)
最終出力: