sort - javascript secara manual menentukan susunan tatasusunan objek
淡淡烟草味
淡淡烟草味 2017-06-28 09:27:54
0
2
706

Saya mempunyai tatasusunan objek Saya mahu ia disusun mengikut susunan yang saya nyatakan Seperti berikut, ia disusun mengikut susunan nama yang saya nyatakan sebarang lodash atau kaedah lain? Bolehkah pakej terkenal daripada tiga pihak mencapai kesan berikut, atau adakah cara lain yang lebih cekap dan mudah untuk menulisnya?


var arr = [
    {
        name:'小麦',
        phone:'112233'
    },
    {
        name:'绿绿',
        phone:'4445566'
    },
    {
        name:'增增',
        phone:'321321'
    },
    {
        name:'弱弱',
        phone:'123123'
    }
];

//希望达到的顺序 (我已知所有元素)
var order = {
    '增增':0,
    '弱弱':1,
    '绿绿':2,
    '小麦':3
};

var newOrderedArr = [];

arr.forEach((element)=>{
    newOrderedArr[order[element.name]] = element;
});

console.log(newOrderedArr);

Hasil konsol adalah seperti berikut

[ { name: '增增', phone: '321321' },
  { name: '弱弱', phone: '123123' },
  { name: '绿绿', phone: '4445566' },
  { name: '小麦', phone: '112233' } ]
淡淡烟草味
淡淡烟草味

membalas semua(2)
黄舟

Jika orders 里面是按 0 ~ n mempunyai nilai berterusan, maka kaedah anda sudah sangat, sangat pantas, dan kaedah perpustakaan lain tidak dapat mencapai kelajuan ini (kerana mereka akan mempertimbangkan situasi tidak berterusan)

Jika tidak berterusan, anda boleh menggunakan sort

newOrderedArr = arr.sort((a, b) => order[a.name] - order[b.name]);

Atau anda boleh menggunakan kaedah anda dan menambah penapis

newOrderedArr = newOrderedArr.filter(n => n);

Tambahan: Untuk kes nombor siri tidak berturut-turut, perbandingan tanpa pengisihan adalah seperti yang ditunjukkan dalam rajah

漂亮男人

Idea ini nampaknya sangat pantas. Dari perspektif kemudahan penggunaan, indeks pesanan boleh dijana supaya tatasusunan nama boleh dimasukkan setiap kali.

Tetapi tidak jika ada nama pendua. Anda perlu mengekalkan rekod tatasusunan untuk setiap nama dan akhirnya menggabungkannya

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan