JavaString遍历字符串并将字符串分解为子字符串

时间:2018-11-18 21:05:02

标签: javascript arrays

我想遍历字符串集,并通过删除两个字符并将它们存储到数组中将它们分成子字符串。 假设返回了两个字符串,字符数将始终是2的倍数。

AADDFFCC
GGDD

第一个字符串将给我AADDFF,AADD,AA
第二个字符串将给我GG。 我想将所有子字符串存储到单个数组中。 因此,基于以上示例,我应该得出结论。 subString = ["AADDFF","AADD","AA","GG"] 这是我不完整的尝试。

var StringArray = ["AADDFFCC","GGDD"] //this could be indefinite length
var subString = [];
var StringArrayLength = StringArray.length;
var loopCurrentString;
var loopCurrentSubString

for (var i = 0; i < StringArrayLength; i += 2) {

loopCurrentString = StringArray[i];

 loopCurrentSubString = loopCurrentString.substring(0, loopCurrentString.length - 2);
}

2 个答案:

答案 0 :(得分:1)

for (var i = 0; i < StringArrayLength; i ++) {
  //get element
  loopCurrentString = StringArray[i];
  //add substrings in the array
  while(loopCurrentString.length>2){
    loopCurrentSubString = loopCurrentString.substring(0, loopCurrentString.length - 2);
    substring.push(loopCurrentSubString);
  }
}

答案 1 :(得分:0)

这是带有嵌套for loops的实现:

const data = ["AADDFFCC", "GGDD"]
const endResult = []

for (var i = 0; i < data.length; i++) {
  for (var j = 0; j < data[i].length; j += 2) {
    if (j != 0)
      endResult.push(data[i].slice(0, data[i].length - j))
  }
}

console.log(endResult)

您可以通过使用reduceRight从右侧开始将数组切成所需的块来完成此操作:

const data = ["AADDFFCC","GGDD"]

const chunkBy = (arr, by=2) => [...arr].reduceRight((r,c,i,a) => 
  ((((a.length-1) - i)%by == 0 && a.length-1 != i) ? 
  r.push(a.slice(0, i+1).reduce((r,c) => `${r}${c}`)) : 
  0, r),[])
	
console.log(data.reduce((r,c) => [...chunkBy(r), ...chunkBy(c)]))

最后,通过ES6传播算子将它们缝合在一起。