我有一个值字符串
"000111111122222223333333444455556666"
我如何使用循环为索引值从0到3生成一个数组(创建[000]的数组,然后从3到10、10到17、17到24的索引值的另一个数组生成例如[1111111、2222222、333333],然后再执行另一个循环以生成从24到28、28到32、32到36的索引值数组,从而产生例如[4444、5555、6666])?
因此,总共使用3个不同的for循环创建了3个不同的数组。
array1 = [000]
array2 = [1111111, 2222222, 333333]
array3 = [4444, 5555, 6666]
答案 0 :(得分:0)
您可能希望尝试以下方法(仅是示意性解决方案!):
var l_Input = "000111111122222223333333444455556666" ;
var l_Array_1 = [] ;
var l_Array_2 = [] ;
var l_Array_3 = [] ;
var l_One_Char ;
for (var i = 0 ; i < l_Input.length ; i++) {
l_One_Char = l_Input.substring(i,i) ;
if (i < 3) {
l_Array_1.push(l_One_Char) ;
continue ;
}
if (i >= 3 && i < 10) {
l_Array_2.push(l_One_Char) ;
continue ;
}
:
:
}
答案 1 :(得分:0)
我认为这会起作用。
const str = '000111111122222223333333444455556666';
function makeArr(str, item) {
let firstIndex = str.indexOf(item);
let lastIndex = str.lastIndexOf(item) + 1;
return [ str.substring(firstIndex, lastIndex) ];
}
const first = makeArr(str, 0);
const second = [].concat(makeArr(str, 1))
.concat(makeArr(str, 2))
.concat(makeArr(str, 3));
const third = [].concat(makeArr(str, 4))
.concat(makeArr(str, 3))
.concat(makeArr(str, 3));
答案 2 :(得分:0)
您可以映射子字符串。
var str = '000111111122222223333333444455556666',
parts = [[3], [7, 7, 7], [4, 4, 4]],
result = parts.map((i => a => a.map(l => str.slice(i, i += l)))(0));
console.log(result);
答案 3 :(得分:0)
function split(string, start, end) {
var result = [],
substring = string[start],
split;
for (var i = start + 1; i < end; i++) {
var char = string[i];
if (char === substring[0])
substring += char;
else {
result.push(substring);
substring = char;
}
}
result.push(substring);
return result;
}
split("00011122",0,8)
[“ 000”,“ 111”,“ 22”]
答案 4 :(得分:0)
要动态地执行此操作,可以使用.split()
和.map()
方法从array
中创建一个string
,然后按值对这array
个项进行分组。
这应该是我们的代码:
const str = "000111111122222223333333444455556666";
var groupArrayByValues = function(arr) {
return arr.reduce(function(a, x) {
(a[x] = a[x] || []).push(x);
return a;
}, []);
};
var arr = str.split("").map(v => +v);
var result = groupArrayByValues(arr);
这将为您提供array
个单独的数组,每个数组具有相似的values
。
演示:
const str = "000111111122222223333333444455556666";
var groupArrayByValues = function(arr) {
return arr.reduce(function(a, x) {
(a[x] = a[x] || []).push(x);
return a;
}, []);
};
var arr = str.split("").map(v => +v);
var result = groupArrayByValues(arr);
console.log(result);