【问题标题】:How to split array in every negative number如何在每个负数中拆分数组
【发布时间】:2021-04-07 10:42:25
【问题描述】:

我有一个这样的数字数组

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

遇到负值有没有办法拆分?

所以,会是这样的

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

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

谢谢

【问题讨论】:

  • 不,当然不使用正则表达式。只需遍历数组并将元素附加到最后一个数组或根据值创建一个新数组。
  • @luk2302 不错,我先试试

标签: javascript arrays string numbers


【解决方案1】:
  1. 首先创建几个temporary 数组来保存值。

  2. Loop 通过您的主数组

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

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

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

  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]]

【讨论】:

    【解决方案2】:

    试试这个:

    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 值。既不消极也不积极

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-21
      • 1970-01-01
      • 2018-12-30
      • 1970-01-01
      • 2011-08-16
      相关资源
      最近更新 更多