2

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
0

2 Answers 2

1

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
Sign up to request clarification or add additional context in comments.

Comments

1

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

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.