Bagaimana untuk mengemas kini sifat menggunakan javascript dan mendapatkan hasil dengan nilai harta dalam susunan berturut-turut dalam objek tatasusunan
P粉980815259
P粉980815259 2024-04-04 13:32:46
0
1
385

Saya mempunyai pelbagai objek list,参数ridrorder sedang dilalui.

-> 1. Jika rid与列表中的id相同,则用rorder更新itemorder > nilai.

-> 2.Senarai Kemas Kini uList 属性 itemorder Jika nilai yang sama wujud, naikkan nilai sehingga tertib berturut-turut (1,2, 3...n)

var rid = 23; var rvalue = 2
const list = [
  { id: 12, itemorder:null, place : 'IN' },
  { id: 24, itemorder: 1, place: 'MY' }, 
  { id: 23, itemorder: 4, place: 'AU' },
  { id: 44, itemorder: 3, place: 'SG' },
  { id: 54, itemorder: 2, place: 'CN' }, 
];

//updated List will be
const uList = [
  { id: 12, itemorder:null, place : 'IN' },
  { id: 24, itemorder: 1, place: 'MY' }, 
  { id: 23, itemorder: 2, place: 'AU' }, // updates since id and rid same // 2
  { id: 44, itemorder: 3, place: 'SG' }, // 4
  { id: 54, itemorder: 2, place: 'CN' }, // 3
];

// uList property itemorder has same value here `2`, increment until consecutive (1,2, 3...n).

Expected Output

[
  { id: 12, itemorder:null, place : 'IN' },
  { id: 24, itemorder: 1, place: 'MY' }, 
  { id: 23, itemorder: 2, place: 'AU' },
  { id: 44, itemorder: 4, place: 'SG' },
  { id: 54, itemorder: 3, place: 'CN' }, 
];
Tried 

var listChanged = list.map(e=> ({
  ...e,
  itemorder: e.id===rid ? rvalue : e.itemorder
}))

var result = listChanged.map(i => ({
  ...e,
  itemorder: (i.itemorder !== rvalue && i.itemorder > rvalue) ? (i.itemorder || 0)+1 : i.itemorder
}));
when passing var rid = 23; var rvalue = 1

Expected Output:

[
  { id: 12, itemorder:null, place : 'IN' },
  { id: 24, itemorder: 2, place: 'MY' }, // 1 becomes 2
  { id: 23, itemorder: 1, place: 'AU' }, // updates since both id and rid same
  { id: 44, itemorder: 4, place: 'SG' },//3 becomes 4
  { id: 54, itemorder: 3, place: 'CN' }, //2 becomes 3
]

no repeat values so increment, follows consecutive order (1,2,3..n)

P粉980815259
P粉980815259

membalas semua(1)
P粉865900994

var rid = 23; var rvalue = 2
const list = [
  { id: 12, itemorder: null, place: 'IN' },
  { id: 24, itemorder: 1, place: 'MY' },
  { id: 23, itemorder: 4, place: 'AU' },
  { id: 44, itemorder: 3, place: 'SG' },
  { id: 54, itemorder: 2, place: 'CN' },
];

let ridIdx = list.findIndex(x => x.id === rid)

orderedList = list.map((l,i) => {
    if(i === ridIdx) {
        return {
        ...l,
        itemorder: rvalue
        }
    }
    if(i > ridIdx) {
        return {
            ...l,
            itemorder: l.itemorder + 1
        }
    }
    return l
})

console.log(orderedList)

Kod di atas sepatutnya berfungsi. Berdasarkan apa yang saya tahu daripada soalan anda setakat ini, berikut adalah langkah-langkahnya:

  1. Cari barang dengan rid in 列表
  2. Sekarang petakan 列表 dan berdasarkan indeks yang terdapat dalam langkah 1, kembalikan secara lalai pesanan item sebagai nilai r jika indeks item sepadan dengan indeks di atas dan kembalikan dengan menambah pesanan item sedia ada jika indeks item lebih besar daripada indeks yang ditemui, maka nilai dinaikkan sebanyak 1
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!