如何仅为数组的特定部分应用连接?

时间:2017-03-17 10:35:53

标签: javascript jquery arrays

我正在获取一个数组并在此数组变量中对其进行描述:

let arrayStr = oldArr.join(', ');

我的数组在控制台中看起来像这样:

(a), text1, (b), text2, (c), text3, (d), text3

我想要的是让它看起来像这样:

(a) - text1, (b) - text2, (c) - text3, (d) - text3

我知道我在所有字符串后添加了', ',但我怎样才能像上面那样应用它?

感谢。

3 个答案:

答案 0 :(得分:3)

你可以通过遍历数组并通过索引访问当前项目以及下一个项目然后将它们附加到新数组的相同元素来实现这一点,如下所示:



var oldArr = ['(a)', 'text1', '(b)', 'text2', '(c)', 'text3', '(d)', 'text3'];

var newArr = [];
for (var i = 0; i < oldArr.length; i++) {
  newArr.push(oldArr[i] + ' - ' + oldArr[++i]);
}

console.log(newArr.join(', '));
&#13;
&#13;
&#13;

答案 1 :(得分:1)

您可以使用三步解决方案,首先获取在单个子数组中连接的所有项目,映射连接的子数组并调整外部数组。

var array = ['(a)', 'text1', '(b)', 'text2', '(c)', 'text3', '(d)', 'text3'],
    text = array
        .reduce(function (r, a, i) {
            i % 2 ? r[r.length - 1].push(a) : r.push([a]) ;
            return r;
        }, [])
        .map(function (a) {
            return a.join(' - ');
        })
        .join(', ');

console.log(text);

答案 2 :(得分:0)

您可以循环遍历所有数组元素并使用%(modulo)运算符根据需要组合值:

&#13;
&#13;
var oldArr = ['(a)', 'text1', '(b)', 'text2', '(c)', 'text3', '(d)', 'text4'];
var arrayStr  = [];
for (var i = 0; i < oldArr.length; i++) {
  if (i % 2 != 0) {
    oldArr[i] = oldArr[i - 1] + ' - ' + oldArr[i] ;
    arrayStr.push(oldArr[i]);
  }
}
console.log(arrayStr.join(', '));
&#13;
&#13;
&#13;