代码是程序的一部分,它返回数组中最大的数字。有人可以解释一下吗?谢谢
if (parseInt(nums[0]) < parseInt(nums[1])) { nums.splice(0,1); }
else { nums.splice(1,1); }
答案 0 :(得分:3)
基本是了解.splice
doesMDN
因此,根据传递的参数删除项目修改您的数组
数组。拼接(开始[,deleteCount [,item1 [,item2 [,...]]]])
var nums = ["2", 4];
if (parseInt(nums[0]) < parseInt(nums[1])) {
nums.splice(0,1); // At index 0 remove 1 item
} else {
nums.splice(1,1); // At index 1 remove 1 item
}
console.log( nums ) // Modified array
&#13;
PS:
nums[0]
nums[1]
[1, 1]
(相同的值) - 什么都不会发生。[1.9, 1]
- [1]
将被退回,因为您正在使用parseInt
parseInt(value, radix)
parseInt(nums[0], 10)
一样使用 radix 的好习惯<{1}} 答案 1 :(得分:1)
既然你写了NOOB,我认为明确这一点非常重要。
splice
方法从指定索引处的数组中删除0个或更多项,并在该索引处插入0个或更多项。
签名为someArray.splice(startNdx, deleteCount[, ...itemsToInsert])
在您发布的代码中,此部分
nums.splice(0,1);
从索引0开始,从数组中删除1个元素。换句话说,如果数组为[5, 6, 7]
,它将变为[6, 7]
nums.splice(1,1);
此部分从索引1开始,从数组中删除1个元素。换句话说,如果数组为[5, 6, 7]
,它将变为[5, 7]
。
parseInt
部分将字符串转换为整数,这表明数组包含字符串而不是数字(或者可能包含字符串)。假设数组确实包含字符串,那么没有parseInt
部分,它将比较字符串而不是数字,这是不同类型的比较。由于您没有显示数组的内容,因此很难确切地知道它正在尝试做什么但是例如
"00" < "0000"
是真实的
parseInt("00") < parseInt("0000")
不是真的。类似地
"000_bob" < "000_jill" is true
但
parseInt("000_bob") < parseInt("000_jill")
不是真的
因此代码检查第一个值是否小于第二个值,但它是按整数而不是字符串进行比较。
其他人声称这是错误的代码,但如果不知道正在使用它的上下文,那么代码也不错。