Javascript 获取数组中的最后一项行为异常
我有一个函数,它应该对数组进行排序,然后得到最后一个项目的差值——第一个项目,并在两者之间添加所有缺失的数字,然后将其与原始数组进行比较,计算出添加了多少数字,所以它工作得很好,但是在一些测试用例上,它的行为很奇怪,数组中最后一个索引项不是正确的,下面是代码和测试用例Javascript 获取数组中的最后一项行为异常,javascript,arrays,loops,Javascript,Arrays,Loops,我有一个函数,它应该对数组进行排序,然后得到最后一个项目的差值——第一个项目,并在两者之间添加所有缺失的数字,然后将其与原始数组进行比较,计算出添加了多少数字,所以它工作得很好,但是在一些测试用例上,它的行为很奇怪,数组中最后一个索引项不是正确的,下面是代码和测试用例 function makeArrayConsecutive2(statues) { var sorted = statues.sort(); var arr =[]; var firstItem = sor
function makeArrayConsecutive2(statues) {
var sorted = statues.sort();
var arr =[];
var firstItem = sorted[0];
var lastItem = sorted[sorted.length -1];
var difference= lastItem-firstItem;
var counter=0;
for (var i=0;i<=difference;i++){
arr.push(firstItem++);
}
for(var i=0;i<arr.length;i++){
if(sorted.indexOf(arr[i])==-1){
counter++;
}
}
console.log(counter);
}
makeArrayConsecutive2([1,3,5]); //this works correctly and the output
//is 2 since the numbers missing are 2 and 4 so 2 numbers
makeArrayConsecutive2([1,3,5,9,12]); //this outputs 5 when it should
//output 7
函数makeArrayConsecutive2(状态){
var sorted=status.sort();
var-arr=[];
var firstItem=sorted[0];
var lastItem=sorted[sorted.length-1];
变量差异=lastItem firstItem;
var计数器=0;
对于JavaScript中的(var i=0;i,内置的Array.sort()
基于字符串而不是数字进行排序。因此,即使您有一个数字数组,也需要向sort()方法传递一个比较函数,以确保值按数字排序:
函数makeArrayConsecutive2(状态){
var sorted=status.sort(函数(a,b){
返回a-b;
});
var-arr=[];
var firstItem=sorted[0];
var lastItem=sorted[sorted.length-1];
变量差异=lastItem firstItem;
var计数器=0;
对于JavaScript中的(var i=0;i,内置的Array.sort()
基于字符串而不是数字进行排序。因此,即使您有一个数字数组,也需要向sort()方法传递一个比较函数,以确保值按数字排序:
函数makeArrayConsecutive2(状态){
var sorted=status.sort(函数(a,b){
返回a-b;
});
var-arr=[];
var firstItem=sorted[0];
var lastItem=sorted[sorted.length-1];
变量差异=lastItem firstItem;
var计数器=0;
对于(var i=0;我还有一个警告,因为OP可能不知道,因为给定了代码:sort
将对数组进行排序,然后返回它。因此,sorted
和status
是同一个数组,如果您希望makeArrayConsecutive
不会弄乱status
的话,您会大吃一惊。还有一个警告,因为OP如果给定代码,sort
将对数组进行排序,然后返回它。因此,sorted
和status
是同一个数组,如果您希望makeArrayConsecutive
不会将status
弄乱,您会大吃一惊。