Agar qatorni qanday qilib olish va har bir element o'rtasida vergulni kiritish mumkin?

I am trying to understand how to take an array like [1,2,3,4,5] and then between each index, add a , so the array becomes [1, ', ', 2, ', ', 3, ', ', 4, ', ', 5]

Bilaman, bu ahmoqdir, lekin u bilan ba'zi muammolar bor.

Odatda, splice() usulini ishlatmoqchiman, shuning uchun qator va har bir g'alati indeksni yineleyebilirim, splice (index, 0, ',')/code>.

4
"Asosan, splice() usuli kabi bir narsani ishlatmoqchiman, shuning uchun ketma-ketlik va har bir g'alati indeksni yineleyebilirim, men indeksni (indeks, 0, ',') amalga oshiraman" 1 da, .splice() kodiga 2 kodi orqali o'tib ketadigan katalog qo'shildi.
qo'shib qo'ydi muallif guest271314, manba
Rahmat. Men JS intervyu savollariga rioya qilishga harakat qilaman va ulardan bittasi console.log ga ba'zi matnlarni kiritishdir. Men bu savolga to'g'ri javob bera olaman, shuning uchun men o'zimga o'zimga qarshi kurashishga urinaman (vergulni ajratib olishni bilmayman), lekin hozir o'z muammomni bajarolmayman
qo'shib qo'ydi muallif user1354934, manba
Sizning qatorni o'zgartirishga urinishning o'rniga, yangi narsani - bu erishish osonroq bo'ladi.
qo'shib qo'ydi muallif georg, manba
ES6 uchun, JavaScript qatoridagi barcha elementlar orasidagi interferents element "> stackoverflow.com/questions/37128624/… .
qo'shib qo'ydi muallif kennytm, manba
Tezlik: arr.join (','). Split (''); - JS mexanizmi ularning barchasi bir xil turdagi (bir qator qatorlarga ega bo'lishni) afzal ko'radi, lekin aslida raqamli toifalarga aralashtirilgan satrlarga kerak yoki yo'qligiga bog'liq.
qo'shib qo'ydi muallif Luke Briggs, manba

7 javoblar

Qo'shilgan qiymatlari bilan yangi qator yaratish uchun reduce dan foydalanishingiz mumkin:

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

function weaveArray(array, weaveValue) {
  const {length} = array;
  return array.reduce((result, value, i) => {
    if(i < length - 1) {
      result.push(value, weaveValue);
    } else {
      result.push(value);
    }
    return result;
  }, []);
}

console.log(
  weaveArray([1,2,3,4,5], ",")
);
</div> </div>
2
qo'shib qo'ydi

Faqat ikkita usul bilan:

Tartibga solish

Agar vergulni saqlashni xohlasangiz, buning o'rniga regexp foydalaning:

var c = a.join (',') .split (/ \ s (= =, \ s) /);

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

var a = [1,2,3,4,5];
var b = a.join(' , ').split(' ');
var c = a.join(', ,  , ').split(/\s(?=,\s)/);
console.log(b,c);
</div> </div>
1
qo'shib qo'ydi
22 , 33 qiymatlari bilan 2 , 2 va boshqalar.
qo'shib qo'ydi muallif Paweł, manba
Yuqoridagi sharhni ko'rib chiqing - siz bunday savollarga mos kelmasligini ta'kidlashingiz mumkin.
qo'shib qo'ydi muallif Luke Briggs, manba
Men faqat izohda bitta raqamlarni ko'rib chiqdim, lekin u turlari (xususan, nafrat aralashma turi qatorlari - barcha satrlarning qatori juda yaxshi) Jadvallar haqidagi ma'lumotni o'zgartirmaydi.
qo'shib qo'ydi muallif Luke Briggs, manba

Agar callback funktsiyasi sifatida qabul qiladigan .howto usulini ishlatishingiz mumkin.

kamaytirish() usuli akkumulyator va har biriga qarshi funktsiyani qo'llaydi   massiv qiymatini (chapdan o'ngga) bir marta qisqartirish uchun ishlatiladi   qiymati.

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

var array=[1,2,3,4,5];
console.log(array.reduce(function(a,b){
    return a.concat(b).concat(",");
},[]).slice(0,-1));
</div> </div>
1
qo'shib qo'ydi
@SimpleJ, javobni yangiladim.
qo'shib qo'ydi muallif Mihai Alexandru-Ionut, manba
Sizning yechimingiz natija oxirida vergul qo'shmasligi kerak
qo'shib qo'ydi muallif SimpleJ, manba

Array.prototype.join() , Array.prototype.map() va String.prototype.match() funksiyalaridan foydalanib,

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

var arr = [1,2,3,4,5],
    newArr = arr.join(',').match(/\w+|\W+/g).map(function(v){
        return (isNaN(v))? v : +v; //considering numeric values
    });

console.log(newArr);
</div> </div>

You wanted splice approach? Here it is:

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

var arr = [1,2,3,4,5];
for (var i = 1; i < arr.length; i+=2) {
    arr.splice(i, 0, ',');
}

console.log(arr);
</div> </div>
1
qo'shib qo'ydi

Use .reduce()

  1. Start with empty array
  2. Push an element of array then push ', '
  3. At last remove last ', ' using .pop()

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

var array1 = [1, 2, 3, 4, 5]

var array2 = array1.reduce(function(acc, val) {
  acc.push(val);
  acc.push(', ');
  return acc;
}, []);

array2.pop();

console.log(array2);
</div> </div>
1
qo'shib qo'ydi

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

console.log([1,2,3,4,5].reduce(function(acc, val, idx, list) {
  acc.push(val);
  if (idx < list.length - 1) {
    acc.push(',');

  }
  return acc;
}, []));
</div> </div>
1
qo'shib qo'ydi

You can use a variable at .splice() to increment index by 2

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

var arr = [1,2,3,4,5];
for (let i = 1, len = arr.length * 2; arr.length < len - 1; arr.splice(i, 0, ","), i += 2);
console.log(arr);
</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