将字符串转换为数组数组

时间:2017-10-11 23:39:57

标签: javascript arrays arraylist multidimensional-array arrayofarrays

我有一串看起来像这样的数据

0E-11 GERBER CA 960350E-110.0215.500000000 0E-12 TEHAMA CA 960900E-11214.800000000

我想将此字符串转换为数组数组。

请注意,每4个元素后,此数组应分为新数组,最终结果应如下所示:

欲望结果:

this.tblData: Array(2)
            0: ["0E-11,"GERBER", "CA", "960350E-110.0215.500000000"]
            1:["0E-12", "TEHAMA", "CA" ,"960900E-11214.800000000"]

谢谢

3 个答案:

答案 0 :(得分:2)

您可以在该字符串上使用remainder运算符和forEach循环来构建数组数组,其中每个 n 步骤都会创建每个嵌套数组:

.animated {
    -webkit-animation: fade-in 1s linear 1001ms, fade-out 1s linear 3s;
    -webkit-animation-fill-mode: forwards;
}

答案 1 :(得分:2)

您可以将reduce用于此类目的



let result = "0E-11 GERBER CA 960350E-110.0215.500000000 0E-12 TEHAMA CA 960900E-11214.800000000"
  .split(" ") // split the string based on the spaces
  .reduce((current, item) => { 
    if (current[current.length - 1].length === 4) {
      // in case the result array has already 4 items in it
      // push in a new empty array
      current.push([]);
    }
    // add the item to the last array
    current[current.length - 1].push(item);
    // return the array, so it can either be returned or used for the next iteration
    return current;
  }, [ [] ]); // start value for current would be an array containing 1 array

console.log(result);




首先用空格分割你的字符串,创建一个值数组,然后我们可以使用reduce函数转换结果。

reduce函数将第二个参数作为当前参数的起始值,该参数将作为包含1个空数组的数组开始。

在reducer中,首先检查数组中的最后一项是否长度为4,如果是,则将下一个子数组添加到数组中,然后将当前项推送到最后一个数组中。

结果将是一个包含数组的数组

答案 2 :(得分:2)

无需使用模数运算符,只需将循环计数器递增4:

var original = [
    '0E-11',
    'GERBER',
    'CA',
    '960350E-110.0215.500000000',
    '0E-12',
    'TEHAMA',
    'CA',
    '960900E-11214.800000000'
];

var result = [];

for (var i = 0; i < original.length; i += 4) {
    result.push([
        original[i],
        original[i+1],
        original[i+2],
        original[i+3],
    ]);
}

console.log(result);

输出:[ [ '0E-11', 'GERBER', 'CA', '960350E-110.0215.500000000' ], [ '0E-12', 'TEHAMA', 'CA', '960900E-11214.800000000' ] ]

这假设数据是4元素对齐的。