Reputation: 8841
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]
I know it sounds stupid but I'm having some issues with it.
Basically, I want to use something like splice()
method, so that I can iterate over the array and each odd index, I can do splice(index, 0, ', ')
.
Upvotes: 6
Views: 5949
Reputation: 92854
Short solution using Array.prototype.join()
, Array.prototype.map()
and String.prototype.match()
functions:
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);
You wanted splice
approach? Here it is:
var arr = [1,2,3,4,5];
for (var i = 1; i < arr.length; i+=2) {
arr.splice(i, 0, ',');
}
console.log(arr);
Upvotes: 1
Reputation: 4516
With just two methods:
Edit
If you want to save your commas use some regexp instead:
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);
Upvotes: 1
Reputation: 1
You can use a variable at .splice()
to increment index by 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);
Upvotes: 0
Reputation: 3019
Use .reduce()
array
then push ', '
', '
using .pop()
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);
Upvotes: 3
Reputation: 1996
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;
}, []));
Upvotes: 1
Reputation: 48357
You can use .reduce
method which accepts as parameter a callback
function.
The reduce() method applies a function against an accumulator and each value of the array (from left-to-right) to reduce it to a single value.
var array=[1,2,3,4,5];
console.log(array.reduce(function(a,b){
return a.concat(b).concat(",");
},[]).slice(0,-1));
Upvotes: 5
Reputation: 14768
You can use reduce
to create a new array with the 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], ",")
);
Upvotes: 2