How to take an array and insert commas between each element?

I'm trying to figure out how to take an array of type [1,2,3,4,5], and then add between each index ,so that the array becomes[1, ', ', 2, ', ', 3, ', ', 4, ', ', 5]

I know this sounds silly, but I have problems with it.

Basically, I want to use something like a method splice()so that I can iterate over an array and every odd index I can do splice(index, 0, ', ').

+4
source share
7 answers

You can use reduceto create a new array with inserted values:

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], ",")
);
Run codeHide result
+2
source

You can use a method .reducethat takes a as a parameter callback.

reduce() ( ), .

var array=[1,2,3,4,5];
console.log(array.reduce(function(a,b){
    return a.concat(b).concat(",");
},[]).slice(0,-1));
Hide result
+1

:

Edit

, :

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

var a = [1,2,3,4,5];
var b = a.join(' , ').split(' ');
var c = a.join(', ,  , ').split(/\s(?=,\s)/);
console.log(b,c);
Hide result
+1

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;
}, []));
Hide result
+1

Array.prototype.join(), Array.prototype.map() String.prototype.match():

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);
Hide result

splice? :

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

console.log(arr);
Hide result
+1

.reduce()

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);
Hide result
+1

.splice() 2

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);
Hide result
0

Source: https://habr.com/ru/post/1670328/


All Articles