如何获取数组,并在每个项目之间插入逗号?

时间:2017-02-20 18:40:45

标签: javascript arrays

我正在尝试了解如何使用[1,2,3,4,5]之类的数组,然后在每个索引之间添加,,以便数组变为[1, ', ', 2, ', ', 3, ', ', 4, ', ', 5]

我知道这听起来很愚蠢,但我遇到了一些问题。

基本上,我想使用类似splice()方法的东西,这样我就可以迭代数组和每个奇数索引,我可以splice(index, 0, ', ')

7 个答案:

答案 0 :(得分:2)

您可以使用reduce创建一个包含插入值的新数组:

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], ",")
);

答案 1 :(得分:1)

您可以使用.reduce方法接受callback函数作为参数。

  

reduce()方法对累加器和每个都应用一个函数   数组的值(从左到右)将其减少为单个   值。

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

答案 2 :(得分:1)

只用两种方法:

修改

如果您想保存逗号,请使用一些正则表达式:

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

答案 3 :(得分:1)

&#13;
&#13;
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;
}, []));
&#13;
&#13;
&#13;

答案 4 :(得分:1)

使用Array.prototype.join()Array.prototype.map()String.prototype.match()函数的简短解决方案:

&#13;
&#13;
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);
&#13;
&#13;
&#13;

您想要splice方法吗?这是:

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

console.log(arr);
&#13;
&#13;
&#13;

答案 5 :(得分:1)

使用.reduce()

  1. 从空数组开始
  2. 推送array元素,然后按', '
  3. 最后使用.pop()
  4. 删除上一个', '

    &#13;
    &#13;
    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);
    &#13;
    &#13;
    &#13;

答案 6 :(得分:0)

您可以使用.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);