Uchinchi o'zgaruvchini ishlatmasdan Javascriptdagi ob'ekt o'zgaruvchilarini almashtirish

Oddiy arifmetik operatsiyalar bilan 3 o'zgaruvchidan foydalanmasdan 2 ta o'zgaruvchini almashtirish uchun yaxshi ma'lum bo'lgan usul mavjud.

a = 3;
b = 5;
b += a;
a = b - a;
b -= a;
console.log(a); //5
console.log(b); //3

Hech qanday sir yo'q. Lekin men ob'ektlar bo'lgan ikkita parametrni almashtirishim kerak va bunga qanday erishish mumkinligini bilmayman.

Ob'ektlar turli xil ma'lumotlar turlari va usullari bilan juda murakkab. Soddalashtiruvchi misol:

a = {
  label: "xxxxxxx",
  active: false,
  doThatThang: function(val) {
    //some code
  }
};

Ayni paytda almashtirishni amalga oshirish uchun 3 o'zgaruvchidan foydalanmoqdaman, lekin ob'ektlar juda katta va u o'zgaruvchan qiymatlar almashinadigan animatsiya bilan aralashadi.

0
Nima uchun raqamlaringizda ko'rsatilgan usuldan foydalanasiz? Uchinchi o'zgarmaydiganni tushunish osonroqdir va shuning uchun yanada qulay bo'lishi mumkin. (Va har qanday holatda JSning yangi versiyasi bilan siz [a, b] = [b, a] ni amalga oshirishingiz mumkin.)
qo'shib qo'ydi muallif nnnnnn, manba
Nima uchun raqamlaringizda ko'rsatilgan usuldan foydalanasiz? Uchinchi o'zgarmaydiganni tushunish osonroqdir va shuning uchun yanada qulay bo'lishi mumkin. (Va har qanday holatda JSning yangi versiyasi bilan siz [a, b] = [b, a] ni amalga oshirishingiz mumkin.)
qo'shib qo'ydi muallif nnnnnn, manba
Uchinchi o'zgaruvchidan foydalanishingiz kerak. Ob'ektlarning o'lchami mos kelmasligi kerak, chunki siz faqat zikrlarni almashtiryapsiz.
qo'shib qo'ydi muallif 4castle, manba
Muammo sizning animatsiyangiz bilan almashinadi va uchinchi o'zgaruvchanlik tufayli emas.
qo'shib qo'ydi muallif rgthree, manba
Sizga ob'ektni almashtirish vaqtida obyektni mos kelmaslik xatosini olishingiz mumkinligi sababli, ikkita moslamani almashtirish uchun uchinchi o'zgaruvchiga kerak bo'ladi.
qo'shib qo'ydi muallif santosh gore, manba
@ 4castle Kvotani amalga oshirganimda animatsiya buzilmoqda. Uni olib tashlashim bilanoq, u muammosiz ishlaydi.
qo'shib qo'ydi muallif Ditto, manba

8 javoblar

A = 3 va b = 5 deb ayting. Keyin

a = a+b (ie 8)
b= a-b (ie 8-5 = 3)
a= a-b (ie 8-3 = 5). 

Endi ular uchinchi o'zgaruvchini ishlatmasdan almashtiriladi.

4
qo'shib qo'ydi
a va b mutlaq raqamlar emas, balki bir xil turdagi emas
qo'shib qo'ydi muallif Krease, manba
Bu savolda ko'rsatib o'tilganidek, bir xil algoritm emasmi ( a va b tashqari) va + = yorliqisiz - = operatorlari)?
qo'shib qo'ydi muallif nnnnnn, manba
Iltimos, savolni bering. Sizning nomingizdan o'tib ketmagandirsiz va hatto buni aniq aytish mumkin emas.
qo'shib qo'ydi muallif Ditto, manba
Ushbu ob'ektni almashtirish uchun uchinchi o'zgarmaydiganni ishlatish vazifasi.
qo'shib qo'ydi muallif Sonali, manba

A = 3 va b = 5 deb ayting. Keyin

a = a+b (ie 8)
b= a-b (ie 8-5 = 3)
a= a-b (ie 8-3 = 5). 

Endi ular uchinchi o'zgaruvchini ishlatmasdan almashtiriladi.

4
qo'shib qo'ydi
a va b mutlaq raqamlar emas, balki bir xil turdagi emas
qo'shib qo'ydi muallif Krease, manba
Bu savolda ko'rsatib o'tilganidek, bir xil algoritm emasmi ( a va b tashqari) va + = yorliqisiz - = operatorlari)?
qo'shib qo'ydi muallif nnnnnn, manba
Iltimos, savolni bering. Sizning nomingizdan o'tib ketmagandirsiz va hatto buni aniq aytish mumkin emas.
qo'shib qo'ydi muallif Ditto, manba
Ushbu ob'ektni almashtirish uchun uchinchi o'zgarmaydiganni ishlatish vazifasi.
qo'shib qo'ydi muallif Sonali, manba

ES6 arrayini buzishdan foydalaning.

let a = 1;
let b = 2;

[a, b] = [b, a];

console.log(a);
console.log(b);

Qayta: noreferrer"> https://developer.mozilla.org/en/ docs/Web/JavaScript/Reference/Operator/Dissrukturizatsiya_kassasi

1
qo'shib qo'ydi

ES6ni sinab ko'ring Array Destructioning assignment .

DEMO

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

let a = {
  label: "111111",
  active: false,
  doThatThang: function(val) {
    //some code
  }
};
let b = {
  label: "222222",
  active: false,
  doThatThang: function(val) {
    //some code
  }
};

console.log("Before swap");
console.log(a);
console.log(b);

[a, b] = [b, a];

console.log("After swap");
console.log(a);
console.log(b);
</div> </div>
0
qo'shib qo'ydi

Ob'ektlarni almashtirish paytida uchinchi o'zgaruvchidan foydalaning. ES5da buni amalga oshirishning oddiy usuli yo'q.

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

var first = {property: 'value'}
var second = {more: 'stuff'}

console.log('Before')
console.log(first)
console.log(second)

var temp = first
first = second
second = temp

console.log('After')
console.log(first)
console.log(second)
</div> </div>
0
qo'shib qo'ydi
Buni amalga oshirishning oddiy usuli yo'q. - [birinchi, ikkinchi] = [ikkinchi, birinchi] men uchun oddiyroq ko'rinadi. (Bilaman, u eski brauzerlarda qo'llab-quvvatlanmaydi ...)
qo'shib qo'ydi muallif nnnnnn, manba
JavaScript-ni ES6 degan ma'noni anglatadigan kunlarni orziqib kutaman. . .
qo'shib qo'ydi muallif gyre, manba

Ob'ektlarni almashtirish paytida uchinchi o'zgaruvchidan foydalaning. ES5da buni amalga oshirishning oddiy usuli yo'q.

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

var first = {property: 'value'}
var second = {more: 'stuff'}

console.log('Before')
console.log(first)
console.log(second)

var temp = first
first = second
second = temp

console.log('After')
console.log(first)
console.log(second)
</div> </div>
0
qo'shib qo'ydi
Buni amalga oshirishning oddiy usuli yo'q. - [birinchi, ikkinchi] = [ikkinchi, birinchi] men uchun oddiyroq ko'rinadi. (Bilaman, u eski brauzerlarda qo'llab-quvvatlanmaydi ...)
qo'shib qo'ydi muallif nnnnnn, manba
JavaScript-ni ES6 degan ma'noni anglatadigan kunlarni orziqib kutaman. . .
qo'shib qo'ydi muallif gyre, manba
var a=1,
b=2,
output=document.getElementById('output');
output.innerHTML="
Original: "+a+", "+b+"

"; b = [a, a = b][0]; output.innerHTML+="
Swapped: "+a+", "+b+"

"; <div id="output"></div>
0
qo'shib qo'ydi
Texnik jihatdan bu uchinchi o'zgaruvchini yaratadi; u faqat uni yaratadi va uni bir xil yo'nalishda yo'qotadi. :)
qo'shib qo'ydi muallif Krease, manba
Ikkita o'zgaruvchining qiymatlarini almashtirish uchun bitta liner
qo'shib qo'ydi muallif Kaushar Alam, manba
b = [a, a = b] [0]; nima? To'liq nima qiladi? va nima uchun u ishlaydi?
qo'shib qo'ydi muallif Ditto, manba
Sizning yondashuvim mening muammomni hal qilayotganda (animatsiya endi "milt-milt" emas), bu yechimni izohlash uchun ajoyib bo'ladi. Men juda qiziqaman.
qo'shib qo'ydi muallif Ditto, manba
@Krease Nima sababdan u muammoni hal qildi. Ehtimol, uchinchi o'zgaruvchiga o'rnatilgan jarayonda yaratilgan bo'lishi mumkin.
qo'shib qo'ydi muallif Ditto, manba
var a=1,
b=2,
output=document.getElementById('output');
output.innerHTML="
Original: "+a+", "+b+"

"; b = [a, a = b][0]; output.innerHTML+="
Swapped: "+a+", "+b+"

"; <div id="output"></div>
0
qo'shib qo'ydi
Texnik jihatdan bu uchinchi o'zgaruvchini yaratadi; u faqat uni yaratadi va uni bir xil yo'nalishda yo'qotadi. :)
qo'shib qo'ydi muallif Krease, manba
Ikkita o'zgaruvchining qiymatlarini almashtirish uchun bitta liner
qo'shib qo'ydi muallif Kaushar Alam, manba
b = [a, a = b] [0]; nima? To'liq nima qiladi? va nima uchun u ishlaydi?
qo'shib qo'ydi muallif Ditto, manba
Sizning yondashuvim mening muammomni hal qilayotganda (animatsiya endi "milt-milt" emas), bu yechimni izohlash uchun ajoyib bo'ladi. Men juda qiziqaman.
qo'shib qo'ydi muallif Ditto, manba
@Krease Nima sababdan u muammoni hal qildi. Ehtimol, uchinchi o'zgaruvchiga o'rnatilgan jarayonda yaratilgan bo'lishi mumkin.
qo'shib qo'ydi muallif Ditto, manba
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