javascript - 使用纯 JavaScript 计算数组中的负数、正数和零元素

标签 javascript html

我有一个数组:

 var ar1=[];
 var ar=[-1,-2,-3,0,0,5,12,0,-10];

我正在尝试将数字分类为“零”、“负数”和“正数”并计算它们。

这是我的代码:

function counter(ar)  { 
   var num,array1=[0,0,0];
   for (i=0;i<ar.length;i++)    {
      switch (ar[i]<0)      {
         case true : array1[0]++;break;
         case false : 
                        if (ar[i]=0) array1[1]++;
                        else array1[2]++;
                        break;
         default : break;
      }
   }
  return(array1);
}

完整代码:

<script type="text/javascript">
function counter(ar)  { 
   var num,array1=[0,0,0];
   for (i=0;i<ar.length;i++)    {
      switch (ar[i]<0)      {
         case true : array1[0]++;break;
         case false : 
                         if (ar[i]=0) array1[1]++;
                        else array1[2]++;
                        break;
         default : break;
      }
   }
  return(array1);
}
</script></head>
<body>
<script type="text/javascript">
var ar1=[];
 var ar=[-1,-2,-3,0,0,5,12,0,-10];
 ar1=counter(ar);
 alert("No of Negative, Zero and Positive Elements are : "+ar1);
</script>

这个逻辑对我来说似乎是正确的,但不知何故它不起作用。有人可以帮我吗?

更新

我是编码新手,刚刚学习 JavaScript 基础知识。 我之前忘记提及这一点,现在我看到评论里到处都是仇恨。

“这是最好的方法吗?”我应该将其添加到我的问题中。

我在评论中看到 switch case 不是一个好的选择。那么有什么替代方案呢?

最佳答案

要进行比较,您需要使用===

= 用于为变量赋值。

在您的情况下请勿使用开关。你只需要 if else

var ar = [-1, -2, -3, 0, 0, 5, 12, 0, -10];

function counter(ar) {
  var counter = [0, 0, 0];
  ar.forEach(function(a) {
    if (a < 0)
      counter[0]++;
    else if (a > 0)
      counter[2]++;
    else
      counter[1]++;
  });
  return counter;
}

var result = counter(ar);
alert("No of Negative, Zero and Positive Elements are : " + result);

如果你想单独获取所有值,可以使用对象解构:

 let [negative,zero,positive] = counter([0,0,1,1,2,2]);

 if(! negative) alert("no negative ones but "+zero+" nulls");

关于javascript - 使用纯 JavaScript 计算数组中的负数、正数和零元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45993656/

相关文章:

javascript - 为 Stage click 设置监听器

javascript - 如何在 iframe 和 div 上获取 facebook、gmail 网站

javascript - 我想在移动端操作时取消属性

python - 阻止网页中的 HTML 标记

javascript - ng-repeat 中的 Angular 自动触发特定指令

javascript - 包含 15 位字母数字和逗号分隔符的正则表达式

javascript - 使用 async/await 可能出现未处理的 Promise 拒绝

html - 如何隐藏iframe src链接

html - Vuetify 需要日期选择器并且不允许文本输入

javascript - 制作一个 Angular 2 按钮组件,将用户带到网页顶部