Muayyan qiymat ob'ektini qatorga oxirigacha ko'chiring

Ob'ektni qator oxirigacha o'tkazish uchun yo'l topishga harakat qilaman

Menda bunday ob'ektlar mavjud:

[
  {"id":"4","name":"Boaz"},
  {"id":"2","name":"Shareen"},
  {"id":"3","name":"Simon"},
  {"id":"1","name":"Miriam"}
]

I want to move the whole set {"id":"3","name":"Simon"} to the end of it all. I have solution for this here. But my problem is every time that particular object is not coming in second position is there a way to check the object of id=3 and shift that to end using underscoreJS

1
Biror narsani sinab ko'rdingizmi? Muammoni keltirib chiqargan narsalarni sinab ko'rganingizga amin emasman.
qo'shib qo'ydi muallif 4castle, manba
qo'shib qo'ydi muallif Adapter, manba

8 javoblar

Siz qatorni tartiblashingiz mumkin.

Izoh

Array.sort expects 3 possible values as return value.

  • 1: means a is greater than b and a will be move to a higher index than b
  • 0: means a is equal to b and no change will be made.
  • -1: means a is less than b and a will be move to a lower index than b.

For more information please refer: How does Javascript's sort() work?

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var data = [
  {"id":"4","name":"Boaz"},
  {"id":"2","name":"Shareen"},
  {"id":"3","name":"Simon"},
  {"id":"1","name":"Miriam"}
]

data.sort(function(a,b){
  return a.id == 3 ? 1 : 0
})

console.log(data)
</div> </div>

Muqobil usul, kerakli identifikator bilan moslamalarni filtrlash, ularni hozirgi holatdan chiqarib tashlash va ularni orqaga surish mumkin, ammo bu mening tushunchamda juda ko'p ishlaydi. Sort ob'ektni buyurtmani yuqoriga yoki pastga siljitish uchun ideal usul.

4
qo'shib qo'ydi
@NinaScholz b bo'lsa 3 hech qanday o'zgarish bo'lishi mumkin emas. Shuning uchun a.id == 3 qo'shilsinmi? 1: b.id == 3? 0: 0 bir overkillga qaradi. Men sizning fikringizni qabul qilsam ham.
qo'shib qo'ydi muallif Rajesh, manba
@NinaScholz id: 3 hali ham davom etmoqda. JSFiddle . Kechirasiz, men sizning fikringizni bilmayman. Kodda ba'zi katta kamchiliklar mavjud bo'lsa, iltimos tartibga solish/pastga tushirish uchun bepul.
qo'shib qo'ydi muallif Rajesh, manba
siz b.id === '3' ni hurmat qilmaysiz, sizning tartibingiz simmetrik emas.
qo'shib qo'ydi muallif Nina Scholz, manba
sizning kodingiz var data = [{"id": "4", "name": "Boaz"}, {"id": "3", "name": "Simon"}, {"id ":" 2 "," ism ":" Shareen "}, {" id ":" 1 "," name ":" Miriam "}]
qo'shib qo'ydi muallif Nina Scholz, manba
iltimos, siz yuqoridagi yuklatilgan ketma-ketlik bilan cheklash bilan harakat qilib ko'ring.
qo'shib qo'ydi muallif Nina Scholz, manba
return a.id == 3 ni tushuntirib bera olasizmi? 1: 0 ? pastga tushmadi
qo'shib qo'ydi muallif madalinivascu, manba
"A" o'rniga "b" bilan almashtirilgan bo'lsa, "2" chaqiruvida keyingi "a" ga aylanadi va "b" keyingi "a" bo'lsa, u holda katta farq mavjud
qo'shib qo'ydi muallif Fareed Alnamrouti, manba
@NinaScholz to'g'ri deb o'ylayman va biz ham har bir brauzer yoki ekstremistlar bizni ajablantiradigan hol uchun navbat bilan saralash algoritmidan foydalanishi mumkin, chunki JavaScrip sizga solishtirish funksiyasining xatti-harakatini belgilab beradi, bu qanday amalga oshiriladi.
qo'shib qo'ydi muallif Fareed Alnamrouti, manba
"Agar solishtirish funktsiyasi (a, b) 0 qiymatini o'zgartirsa, bir-biriga nisbatan o'zgarishsiz qoldiring, lekin har xil elementlarga nisbatan tartiblangan. Eslatma: ECMAscript standarti bu xatti-harakatga kafolat bermaydi va shuning uchun barcha brauzerlar (masalan, kamida 2003 yilgacha bo'lgan Mozilla versiyalari) buni hurmat qiladi. "
qo'shib qo'ydi muallif Fareed Alnamrouti, manba
qo'shib qo'ydi muallif Fareed Alnamrouti, manba
Asosan tartibda har bir element uchun tartibida "a" bo'lib, agar siz 1 "a" ga qaytsangiz va yuqoriga qaytsangiz -1 u pastga siljiydi va 0 "b" qatoriga ta'sir qilmaydi. bilan solishtirish mumkin
qo'shib qo'ydi muallif Fareed Alnamrouti, manba
Men sizning javobingizni ko'rdim va javobimni o'chirdim: p
qo'shib qo'ydi muallif Fareed Alnamrouti, manba
@Rajesh mening xatoim, siz to'g'ringizda, men sizning tartibingizni noto'g'ri talqin qilaman. Ehtimol, siz javobingizni tahrir qilmaguningizcha, bir upvotega o'tolmayapman ... Balki siz so'nggi yuborilganingiz uchun vaqt qo'shishingiz mumkin;) tahrir: upvoted
qo'shib qo'ydi muallif Elliot E, manba
Men bu savolga javob berishi mumkin emas deb o'ylamayman, u elementni id bilan birga harakatga keltiradigan narsani izlaydi: 3 oxirigacha. sizning [{id: 3}, {id: 4}) kabi biror narsa uchun ishlamaydi. tartibga solish: aslida sizning element id bilan birga harakat qilmaydi: 3 qatorning oxirigacha.
qo'shib qo'ydi muallif Elliot E, manba

Siz qatorni tartiblashingiz mumkin.

Izoh

Array.sort expects 3 possible values as return value.

  • 1: means a is greater than b and a will be move to a higher index than b
  • 0: means a is equal to b and no change will be made.
  • -1: means a is less than b and a will be move to a lower index than b.

For more information please refer: How does Javascript's sort() work?

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var data = [
  {"id":"4","name":"Boaz"},
  {"id":"2","name":"Shareen"},
  {"id":"3","name":"Simon"},
  {"id":"1","name":"Miriam"}
]

data.sort(function(a,b){
  return a.id == 3 ? 1 : 0
})

console.log(data)
</div> </div>

Muqobil usul, kerakli identifikator bilan moslamalarni filtrlash, ularni hozirgi holatdan chiqarib tashlash va ularni orqaga surish mumkin, ammo bu mening tushunchamda juda ko'p ishlaydi. Sort ob'ektni buyurtmani yuqoriga yoki pastga siljitish uchun ideal usul.

4
qo'shib qo'ydi
@NinaScholz b bo'lsa 3 hech qanday o'zgarish bo'lishi mumkin emas. Shuning uchun a.id == 3 qo'shilsinmi? 1: b.id == 3? 0: 0 bir overkillga qaradi. Men sizning fikringizni qabul qilsam ham.
qo'shib qo'ydi muallif Rajesh, manba
@NinaScholz id: 3 hali ham davom etmoqda. JSFiddle . Kechirasiz, men sizning fikringizni bilmayman. Kodda ba'zi katta kamchiliklar mavjud bo'lsa, iltimos tartibga solish/pastga tushirish uchun bepul.
qo'shib qo'ydi muallif Rajesh, manba
siz b.id === '3' ni hurmat qilmaysiz, sizning tartibingiz simmetrik emas.
qo'shib qo'ydi muallif Nina Scholz, manba
sizning kodingiz var data = [{"id": "4", "name": "Boaz"}, {"id": "3", "name": "Simon"}, {"id ":" 2 "," ism ":" Shareen "}, {" id ":" 1 "," name ":" Miriam "}]
qo'shib qo'ydi muallif Nina Scholz, manba
iltimos, siz yuqoridagi yuklatilgan ketma-ketlik bilan cheklash bilan harakat qilib ko'ring.
qo'shib qo'ydi muallif Nina Scholz, manba
return a.id == 3 ni tushuntirib bera olasizmi? 1: 0 ? pastga tushmadi
qo'shib qo'ydi muallif madalinivascu, manba
qo'shib qo'ydi muallif Fareed Alnamrouti, manba
"Agar solishtirish funktsiyasi (a, b) 0 qiymatini o'zgartirsa, bir-biriga nisbatan o'zgarishsiz qoldiring, lekin har xil elementlarga nisbatan tartiblangan. Eslatma: ECMAscript standarti bu xatti-harakatga kafolat bermaydi va shuning uchun barcha brauzerlar (masalan, kamida 2003 yilgacha bo'lgan Mozilla versiyalari) buni hurmat qiladi. "
qo'shib qo'ydi muallif Fareed Alnamrouti, manba
"A" o'rniga "b" bilan almashtirilgan bo'lsa, "2" chaqiruvida keyingi "a" ga aylanadi va "b" keyingi "a" bo'lsa, u holda katta farq mavjud
qo'shib qo'ydi muallif Fareed Alnamrouti, manba
@NinaScholz to'g'ri deb o'ylayman va biz ham har bir brauzer yoki ekstremistlar bizni ajablantiradigan hol uchun navbat bilan saralash algoritmidan foydalanishi mumkin, chunki JavaScrip sizga solishtirish funksiyasining xatti-harakatini belgilab beradi, bu qanday amalga oshiriladi.
qo'shib qo'ydi muallif Fareed Alnamrouti, manba
Asosan tartibda har bir element uchun tartibida "a" bo'lib, agar siz 1 "a" ga qaytsangiz va yuqoriga qaytsangiz -1 u pastga siljiydi va 0 "b" qatoriga ta'sir qilmaydi. bilan solishtirish mumkin
qo'shib qo'ydi muallif Fareed Alnamrouti, manba
Men sizning javobingizni ko'rdim va javobimni o'chirdim: p
qo'shib qo'ydi muallif Fareed Alnamrouti, manba
@Rajesh mening xatoim, siz to'g'ringizda, men sizning tartibingizni noto'g'ri talqin qilaman. Ehtimol, siz javobingizni tahrir qilmaguningizcha, bir upvotega o'tolmayapman ... Balki siz so'nggi yuborilganingiz uchun vaqt qo'shishingiz mumkin;) tahrir: upvoted
qo'shib qo'ydi muallif Elliot E, manba
Men bu savolga javob berishi mumkin emas deb o'ylamayman, u elementni id bilan birga harakatga keltiradigan narsani izlaydi: 3 oxirigacha. sizning [{id: 3}, {id: 4}) kabi biror narsa uchun ishlamaydi. tartibga solish: aslida sizning element id bilan birga harakat qilmaydi: 3 qatorning oxirigacha.
qo'shib qo'ydi muallif Elliot E, manba

Agar taqqoslash deltasidan faqat bir nechta to'g'ri taqqoslashingiz bo'lsa ham foydalanishni taklif qilaman, lekin agar b oxirida tartiblash uchun elementni o'z ichiga olsa, siz simmetrik taqqoslashingiz kerak, siz xohlaysizmi.

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var array = [{ id: "4", name: "Boaz" }, { id: "2", name: "Shareen" }, { id: "3", name: "Simon" }, { id: "1", name: "Miriam" }];

array.sort(function (a, b) {
    return (a.id === '3') - (b.id === '3');
});

console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }
</div> </div>
1
qo'shib qo'ydi
Qanday bilasiz, faqat chap qism muhimmi? Tilning tartiblash mexanizmi sotuvchiga xosdir. Agar siz faqat bir tomonga tayansangiz, noto'g'ri natijani olishingiz mumkin.
qo'shib qo'ydi muallif Nina Scholz, manba
@fareedrma, sizni qabul qilmayapman, nima degan savol?
qo'shib qo'ydi muallif Nina Scholz, manba
Hujjatlarni tekshirib chiqdim va siz 100% haqlisiz. JavaScript-ni standarti faqat solishtirish funktsiyasining xatti-harakatini belgilaydi, ammo qanday amalga oshiriladi. Ushbu qismlar sotuvchi/atrof-muhitga bog'liq.
qo'shib qo'ydi muallif Fareed Alnamrouti, manba
Men nima uchun b.id === "3" ni tekshirib ko'rishimiz kerak?
qo'shib qo'ydi muallif Fareed Alnamrouti, manba
nima bilan ajralib turadi? !! Nima uchun qatordagi oxirgi elementlarni saralashingiz mumkin?
qo'shib qo'ydi muallif Fareed Alnamrouti, manba

Ba'zi oddiy qatorni manipulyatsiya qilish

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var obj = [{
    "id": "4",
    "name": "Boaz"
  },
  {
    "id": "2",
    "name": "Shareen"
  },
  {
    "id": "3",
    "name": "Simon"
  },
  {
    "id": "1",
    "name": "Miriam"
  }
];
obj.forEach(function(v, i) {
  if (v.id == 3) {//test to see if the id is 3
    obj.push(obj[i]);//push the object to the last position
    obj.splice(i, 1);//remove the object from the current position

  }

});
console.log(obj);
</div> </div>
1
qo'shib qo'ydi
function findIdIndex(id, array) {
  return array.findIndex(elem=>elem.id===id);
}

Bu sizga berilgan ID bilan sizning mavqeini beradi, avvalgi savolingizga javob nima qilish kerakligini qolgan qismini o'z ichiga oladi.

1
qo'shib qo'ydi

first write a method like this,send the value as '3' and get the index and attr as id

function getElementIndex(array, attr, value) {
    for(var i = 0; i < array.length; i += 1) {
        if(array[i][attr] === value) {
            return i;
        }
    }
    return -1;
}

Ushbu usul bilan siz ma'lumotni olish uchun har qanday xususiyatdan foydalanishingiz mumkin.

Keyin yozing

var index=getElementIndex(array,'id','3');//here array is your data array you have 
var itemToReplace = array.splice(index, 1); 

array = array.concat(itemToReplace);
0
qo'shib qo'ydi

Buni tegishli obyektning indeksini olish bilan sinab ko'rsata olasizmi?

<div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false"> <div class="snippet-code">

var array  = [{ "id": "4", "name": "Boaz" }, { "id": "2", "name": "Shareen" }, { "id": "3", "name": "Simon" }, { "id": "1", "name": "Miriam" }];

var index =  array.findIndex(x => x.id == 3);

if(index === 2) {
 var person =  array.splice(index, 1);
 array  = array.concat(person);
}

console.log(array)
</div> </div>
0
qo'shib qo'ydi
Javascript UZB
Javascript UZB
99 ishtirokchilar

@js_uzb @vuejs_uz @react_uz @nodejs_uz @angular_uz @ngTashkent @yiiframework_uz @laravel_uz @linux_uzbek @python_uz @swift_uzb —————— @uzdevgroup @UzGeeksGroup ——— @UzDev_Jobs @jobs_uzb