這里是物件。
var arr = {
firstValue:"xyz",
content:[
{
"value": "abc",
"checked": true
},
{
"value": "xyz",
"checked": false
},
{
"value": "lmn",
"checked": true
}
]
}
在這個 firstValue 是 xyz 所以映射 xyz 應該像這樣首先出現:
var arr = {
firstValue:"xyz",
content:[
{
"value": "xyz",
"checked": true
},
{
"value": "abc",
"checked": false
},
{
"value": "lmn",
"checked": true
}
]
}
如何通過使用 javascript 來實作這一點,
謝謝。
uj5u.com熱心網友回復:
const arr = {
firstValue: "xyz",
content: [
{
value: "abc",
checked: true,
},
{
value: "xyz",
checked: false,
},
{
value: "lmn",
checked: true,
},
],
};
const index = arr.content.findIndex((item) => item.value === arr.firstValue);
if (index !== -1 && index !== 0) {
arr.content.unshift(...arr.content.splice(index, 1));
}
uj5u.com熱心網友回復:
看起來您只想將匹配的物件排序到頂部。
您可以使用Array#sort(),盡管這會改變原始物件,因此如果它處于狀態,您將需要在排序之前進行克隆。
var arr = { firstValue: 'xyz', content: [ { value: 'abc', checked: true, }, { value: 'xyz', checked: false, }, { value: 'lmn', checked: true, }, ], };
const sorted = [...arr.content].sort((a, b) =>
(b.value === arr.firstValue) - (a.value === arr.firstValue));
console.log(sorted);
否則,您可以使用找到物件的索引,Array#findIndex()然后使用Array#splice()和Array#unshift()將其移動到陣列的開頭。這里宣告一個實用程式函式并回傳傳遞陣列的副本以避免突變。
var arr = { firstValue: 'xyz', content: [ { value: 'abc', checked: true, }, { value: 'xyz', checked: false, }, { value: 'lmn', checked: true, }, ], };
const orderFirst = (a) => {
const res = [...a];
const i = a.findIndex((o) => o.value === arr.firstValue);
if (i && i !== -1) {
res.unshift(res.splice(i, 1));
}
return res;
};
const sorted = orderFirst(arr.content);
console.log(sorted);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/310803.html
標籤:javascript 数组
