I have some array objects for listing.
based on the list, if the user clicks the particular list item from the objects,
need to show the particular clicked list item as first.
var list = [
{
tradeareaid: "80"
tradeareaname: "test1"
},
{
tradeareaid: "81"
tradeareaname: "test2"
},
{
tradeareaid: "82"
tradeareaname: "test3"
},
{
tradeareaid: "83"
tradeareaname: "test4"
},
{
tradeareaid: "84"
tradeareaname: "test5"
},
]
in the list If I selected trade area 83 means I needed the list like below
var list = [
{
tradeareaid: "83"
tradeareaname: "test4"
},
{
tradeareaid: "80"
tradeareaname: "test1"
},
{
tradeareaid: "81"
tradeareaname: "test2"
},
{
tradeareaid: "82"
tradeareaname: "test3"
},
{
tradeareaid: "84"
tradeareaname: "test5"
},
]
How to achieve this?
asked Feb 17, 2021 at 7:26
user4061275
2 Answers 2
You can get the tradeareaid of the item which is clicked and use the getSortedList function (in a click event handler) to get the new list something like this :
var list = [
{
tradeareaid: "80",
tradeareaname: "test1"
},
{
tradeareaid: "81",
tradeareaname: "test2"
},
{
tradeareaid: "82",
tradeareaname: "test3"
},
{
tradeareaid: "83",
tradeareaname: "test4"
},
{
tradeareaid: "84",
tradeareaname: "test5"
},
]
function getSortedList(id){
const clickedItem = list.find(item=>item.tradeareaid===id)
const filterdList = list.filter(item=>item.tradeareaid!==id)
return [clickedItem,...filterdList]
}
const sortedList = getSortedList(list[3].tradeareaid)
console.log({sortedList})
answered Feb 17, 2021 at 7:33
Hemant Parashar
3,7842 gold badges18 silver badges23 bronze badges
Sign up to request clarification or add additional context in comments.
Comments
You need to set some key for sort onclick
var list = [ { tradeareaid: "80", tradeareaname: "test1" }, { tradeareaid: "81", tradeareaname: "test2" }, { tradeareaid: "82", tradeareaname: "test3" }, { tradeareaid: "83", tradeareaname: "test4" }, { tradeareaid: "84", tradeareaname: "test5" }, ]
//if test4 was clicked
clicked = 3; // index
list.forEach((a, b) => {
list[b]['key'] = b;
if (b == clicked) {
list[b]['key'] = -1;
}
})
console.log(list.sort((a, b) => a.key - b.key))
answered Feb 17, 2021 at 7:32
prasanth
22.5k4 gold badges33 silver badges57 bronze badges
Comments
lang-js