使用LOOPS从字符串创建各种数组

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用LOOPS从字符串创建各种数组相关的知识,希望对你有一定的参考价值。

我有一串价值观

"000111111122222223333333444455556666"

我如何使用循环为0到3的索引值生成一个数组(创建一个数组[000],然后另一个索引值数组从3到10,10到17,17到24,产生例如。[1111111] ,2222222,3333333]然后另一个循环产生一个从24到28,28到32,32到36的索引值数组,产生例如[4444,5555,6666])?

因此,总共使用三个不同的for循环创建了3个不同的数组。

array1 = [000]
array2 = [1111111, 2222222, 333333]
array3 = [4444, 5555, 6666]
答案

你可能希望尝试一下这个(只是一个原理图解决方案!):

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 ;
    }
    :
    :

}

另一答案

我认为这会奏效。

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));
另一答案

您可以映射子字符串。

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);
另一答案
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"]

另一答案

要动态执行此操作,您可以使用.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);

以上是关于使用LOOPS从字符串创建各种数组的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法使用相同的布局动态创建片段并向它们显示数据?

精心收集的 48 个 JavaScript 代码片段,仅需 30 秒就可理解!(转载)

如何使用从 laravel 中的数组中获取的各种术语进行 mysql 关联查询

从viewPager片段(Kotlin)中获取用户输入信息

从活动接收意图后如何创建片段?

具有运行时 pojos 的带有 Hibernate 的 OSGi 片段包