Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/406.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重新组合数组中的特定项_Javascript_Arrays_Logic - Fatal编程技术网

Javascript 重新组合数组中的特定项

Javascript 重新组合数组中的特定项,javascript,arrays,logic,Javascript,Arrays,Logic,这个周末,我一直在寻找一种在数组中重新组合项目的方法,但没有成功。我一直在研究reduce()方法,将连续的数字重新组合成一个数组,尽管它需要映射每个项目的索引,这很快就会变成一团混乱 我可以不找到正确的术语来查找有关堆栈溢出的类似问题。如果这是一个重复的问题,请道歉 // Initial array: foo = ["a", "b", "C", "D", "e", "f", "G", "H", "I", "j", "k", "l", "M", "n" ] // Desired array:

这个周末,我一直在寻找一种在数组中重新组合项目的方法,但没有成功。我一直在研究reduce()方法,将连续的数字重新组合成一个数组,尽管它需要映射每个项目的索引,这很快就会变成一团混乱

我可以找到正确的术语来查找有关堆栈溢出的类似问题。如果这是一个重复的问题,请道歉

// Initial array:

foo = ["a", "b", "C", "D", "e", "f", "G", "H", "I", "j", "k", "l", "M", "n" ]

// Desired array:

bar = ["a", "b", ["C", "D"], "e", "f", ["G", "H", "I"], "j", "k", "l", ["M"], "n" ]

这个简单的示例是不言自明的,它代表了我试图解决的问题。

在数组中重新组合项的最简单方法是简单地用它们的数组替换这些项。您可以像这样使用array.splice方法执行此操作:
foo.splice(1,2[foo[2],foo[3])

这将用完全相同的值替换数组中的索引2-3,但在数组中。

通过循环,检查字符是否为大写字母。
如果是大写字母,则推送临时数组,否则推送结果数组。
当序列从大写移动到小写时,将临时数组推送到结果数组

const foo=[“a”、“b”、“C”、“D”、“e”、“f”、“G”、“H”、“I”、“j”、“k”、“l”、“M”、“n”];
const isCapital=char\u code=>{
const[start,end]=“AZ”.split(“”).map(x=>x.charCodeAt(0));
返回字符代码>=开始(&char)字符代码0){
//prev是资本
const prevCharCode=temp_arr[temp_arr.length-1].charCodeAt(0);
if(currIsCapital&&prevCharCode+1==currCharCode){
温度到达推力(foo[i]);
}否则{
res.push([…温度arr]);
温度arr.length=0;
res.push(foo[i]);
}
}否则{
if(货币资本){
温度到达推力(foo[i]);
}否则{
res.push(foo[i]);
}
}
}
控制台日志(res)
函数重组数组(数组){
设temp=array.map(el=>(el>=“A”&&el{
if(数组isArray(el)){
while(Array.isArray(arr[i+1])){
arr[i]=arr[i].concat(arr[i+1]);
阵列拼接(i+1,1);
}
}
});
返回温度;
}

所需的内部数组背后的逻辑是什么?请您再解释一下好吗?谢谢!这只是理论上的:例如,解析textarea的每一行将在数组中的每一行返回一个项。如果我想在无序列表标记下重新组合列表项,该怎么办?这对于执行此类操作非常有用ion.
let foo=[1,2,3,4,5,6,7];foo.splice(2,3[foo[2,foo[3]);console.log(foo);
Hi,这不起作用。前两个参数必须递减一,因为现在要替换第三个和第四个元素。
function regroupArray(array) {
  let temp = array.map(el => (el >= "A" && el <= "Z" ? [el] : el));
  temp.forEach((el, i, arr) => {
    if (Array.isArray(el)) {
      while (Array.isArray(arr[i + 1])) {
        arr[i] = arr[i].concat(arr[i + 1]);
        arr.splice(i + 1, 1);
      }
    }
  });
  return temp;
}