我想要一个任意长度的数组(在本例中为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的增量,但是没有成功。
任何有关实现的帮助或想法将不胜感激。谢谢。
编辑:谢谢,这已经回答了我的问题:)
答案 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 splice和join,并使用必需的分隔符。
这种方法不会变异现有数据。
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);