如何在每个负数中拆分数组

How to split array in every negative number

我有一个这样的数组

   number = [4, -1, 6, -2, 3, 5, -7, 7]

遇到负值有什么办法拆分吗?

所以,会是这样

array = [[4], [-1], [6], [-2], [3,5], [-7], [7]]

我认为可以使用正则表达式来完成,但我仍然没有找到

谢谢

  1. 首先创建几个temporary数组来保存值。

  2. Loop 通过你的 主数组 .

  3. 然后检查数字是否 greater 而不是 0.

    将正数添加到新创建的临时数组中。

    此外,检查最后一个元素并将其推入输出数组 必填。

  4. 在 else 部分检查元素 less 然后 zero

    然后首先将正数的临时数组压入输出数组。

    之后压入负数的负数临时数组。

    将负数的临时数组推入输出数组。

    现在,为正数和负数重置临时数组。

let number = [4, -1, 6, -2, 3, 5, -7, 7];

let array = [];
let tempArr = [];
let tempArrForNeg = [];
let numberLength = number.length;

for(let i = 0; i < numberLength; i++){
   
   if(number[i] > 0){
     tempArr.push(number[i]);
     if(i === (numberLength - 1))
       array.push(tempArr);
   }
   else{
    array.push(tempArr);
    tempArrForNeg.push(number[i]);
    
    array.push(tempArrForNeg);
    tempArr = [];
    tempArrForNeg = [];
   }
}

console.log(array);

//[[4], [-1], [6], [-2], [3,5], [-7], [7]]

试试这个:

var number= [1,-2,5,6,2,-2,-3,-4,5];
console.log(splitByPositivity(number));

function splitByPositivity(numArr) {
  var newArr = []
  var tempArr = [numArr[0]];
  for (var i=1;i<numArr.length;i++){
    if (numArr[i]>0&&tempArr[tempArr.length-1]>0||numArr[i]<0&&tempArr[tempArr.length-1]<0)
       tempArr.push(numArr[i])
    else{
       newArr.push(tempArr)
       tempArr = [numArr[i]];
}
  }
newArr.push(tempArr);
return newArr;
}

注意你需要处理0值。它不是消极的也不是积极的