将数组拆分为多个包含字符串的数组

时间:2020-06-29 07:26:10

标签: javascript node.js arrays

我想要一个任意长度的数组(在本例中为10):

var fruits = ["Banana", "Orange", "Apple", "Mango", "Strawberry", "Lime", "Kiwi", "Melon", "Pineapple", "Date"];

我要从该数组中以5为增量的元素,将每个增量转换为一个字符串,然后将每个字符串作为嵌套数组存储在新数组中。每个元素都需要用'%'分隔。

输出类似:

newArray = [[ 'Banana%Orange%Apple%Mango%Strawberry' ],[ 'Lime%Kiwi%Melon%Pineapple%Date' ]]

要转换为我正在使用的字符串:

var finalArray = Array()
    var x = ""
        for(i = 0; i < fruits.length; i++){
            if(i==fruits.length-1){
                x = x + fruits[i].toString()
            }
            else {
                x = x + fruits[i].toString()+'%'
            }       
        } finalArray.push([x])

哪个输出:

[['Banana%Orange%Apple%Mango%Strawberry%Lime%Kiwi%Melon%Pineapple%Date']]

我已经尝试了许多for&forEach循环,if / else语句等,以尝试在应用字符串转换代码之前将原始数组拆分为5的增量,但是没有成功。

任何有关实现的帮助或想法将不胜感激。谢谢。

编辑:谢谢,这已经回答了我的问题:)

5 个答案:

答案 0 :(得分:4)

您可以使用Array#splice并裁剪数组直到其为空:

var fruits = ["Banana", "Orange", "Apple", "Mango", "Strawberry", "Lime", "Kiwi", "Melon", "Pineapple", "Date"];

var result = [];

while (fruits.length) {
  result.push([fruits.splice(0, 5).join('%')]);
}

console.log(result);

答案 1 :(得分:2)

您可以对数组进行切片,然后将其与所需的分隔符连接起来。

这种方法不会变异给定的数据。

var fruits = ["Banana", "Orange", "Apple", "Mango", "Strawberry", "Lime", "Kiwi", "Melon", "Pineapple", "Date"],
    separator = '%',
    size = 5,
    index = 0,
    result = [];

while (index < fruits.length) {
    result.push([fruits.slice(index, index += size).join(separator)]);
}

console.log(result);

答案 2 :(得分:2)

请使用array splicejoin,并使用必需的分隔符。

这种方法不会变异现有数据。

var fruits = ["Banana", "Orange", "Apple", "Mango", "Strawberry", "Lime", "Kiwi", "Melon", "Pineapple", "Date"],
separator = '%',
result = []

while (fruits.length) {
  result.push([fruits.splice(0, 5).join(separator)]);
}

console.log(result);

答案 3 :(得分:1)

您可以使用splice()使用所需的字符串.join()进行拆分和合并

var fruits = ["Banana", "Orange", "Apple", "Mango", "Strawberry", "Lime", "Kiwi", "Melon", "Pineapple", "Date"];

function convert(array, increment, separator) {
    let result = [];
    while(array.length >= 1) {
        result.push([array.splice(0, increment).join(separator)]);
    }    
    return result;
}
console.log(convert(fruits, 5, '%'));
console.log(convert(fruits, 3, '%'));

答案 4 :(得分:0)

const fruits = ["Banana", "Orange", "Apple", "Mango", "Strawberry", "Lime", "Kiwi", "Melon", "Pineapple", "Date"];
const result = []

// Loop over all the fruits.
for(let i = 0; i < fruits.length; i++){
  // Get the current fruit's sub-index.
  let idx = Math.floor(i/5);
  // Make sure the subarray exists.
  result[idx] = result[idx] || [];
  // Push the current fruit to the subarray.
  result[idx].push(fruits[i]);
}

// Now we have an nested array of arrays, you want to replace the sub-arrays with joined strings.
for(let i = 0; i < result.length; i++){
  result[i] = [result[i].join('%')];
}

console.log(result);