繁体   English   中英

在数组中获取错误的输出,javascript

[英]getting wrong output in array, javascript

我的输出错误,我在数组arr[]存储了一个大于400的值450, 650我想在我的arr[]存储一个值450, 650而我的arr[]长度应为2(两个),因为有两个大于400值,但输出错误。

数组长度 数组内的值

 var total = [300, 350, 450, 650]; var arr = []; for (var i = 0; i < total.length; i++) { if (parseInt(total[i]) >= 400) { arr[i] = total[i]; } } alert(arr.length); alert(arr); 

您正在通过索引定义数组元素,该索引导致数组具有一些undefined值(已定义的较大索引内的未定义索引)。 而是使用Array#push以正确的方式添加数组元素。

arr.push(total[i]);

您将索引“ i”处的总值添加到arr索引“ i”中。 但是,arr的索引与总数不同。

所以你需要这样做:

 var total = [300, 350, 450, 650]; var arr = []; for (var i = 0; i < total.length; i++) { if (parseInt(total[i]) >= 400) { arr.push(total[i]); } } alert(arr.length); alert(arr); 

您的代码有误,我正在对其进行纠正:

 var total = [300, 350, 450, 650]; var arr = []; for (var i = 0; i < total.length; i++) { if (parseInt(total[i]) >= 400) { arr.push(total[i]); } } alert(arr.length); alert(arr); 

你应该有一个柜台来完成你的任务

var total = [300, 350, 450, 650];
var arr = [];
var counter=0;
for (var i = 0; i < total.length; i++) {
  if (parseInt(total[i]) >= 400) {
    arr.push(total[i]); //to save into an array
  }

}
   console.log(arr.length);

使用ECMA6,阅读起来容易得多

 var total = [300, 350, 450, 650]; var arr = total.filter(value => value >= 400); console.log(arr.length); console.log(arr); 

否则

 var total = [300, 350, 450, 650]; var arr = []; for (var i = 0; i < total.length; i++) { if (parseInt(total[i]) >= 400) { arr.push(total[i]); } } alert(arr.length); alert(arr); 

有了这部分代码,arr [i] = total [i]; 您每次将值添加到与原始位置相同的位置。 小于400的其他值将不添加,但将被映射为空值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM