为了账号安全,请及时绑定邮箱和手机立即绑定

为什么-1 -2没有输出结果,不是从后面算起的吗?

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Array对象 </title>

<script type="text/javascript">

   var myarr1= ["我","爱","你"];

   document.write(myarr1.slice(-1,-2));

</script>

</head>

<body>

</body>

</html>


正在回答

5 回答

是参数的顺序造成的。arry.slice(start, end)函数中,start的位置小于end位置,而不是start的数值要小于end的数值。如果调整JS脚本如下:

var myarr1 = ["我", "爱", "你"];
document.write(myarr1.slice(-2, -1));

则会输出结果为“你”。

也就是说,arry.slice(start, end)函数中,start必须处于end位置之前。而题主程序中start=-1,end=-2,顺序正好颠倒。为了验证这一点,可以设计JS脚本如下:

var myarr1 = ["我", "爱", "你"];
document.write(myarr1.slice(3, 1));

你是否也无法获得任何输出结果呢?

2 回复 有任何疑惑可以回复我~
#1

_慕慕_ 提问者

谢谢你
2019-07-10 回复 有任何疑惑可以回复我~
#2

大倪

var myarr1 = ["我", "爱", "你"]; document.write(myarr1.slice(-2, -1)); 输出结果为“爱” 从 start 到 end (不包括该元素)的元素。从-2开始,到-1结束,包括-2(爱)不包括-1(你)
2019-09-26 回复 有任何疑惑可以回复我~

它这章节有些问题:

原说明是:

arrayObject.slice(start,end)

但在我看来应该是:

arrayObject.slice(start,length)

第2个参数,应该是指定截取的长度,如果是end根本不符合它自己说的左闭右开

0 回复 有任何疑惑可以回复我~
#1

番茄boy

对不起,是我看错了,我看成了splice,搞错了,原章节没有问题 应该是跟substring相似
2020-11-12 回复 有任何疑惑可以回复我~

<!DOCTYPE html>

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<title>Array对象 </title>

<script type="text/javascript">

   var myarr1= ["我","爱","你"];

//   document.write(myarr1.slice(1))

   document.write(myarr1.slice(-2))


</script>

</head>

<body>

</body>

</html>


0 回复 有任何疑惑可以回复我~

应该输出“ 爱”

0 回复 有任何疑惑可以回复我~

http://img1.sycdn.imooc.com//5e1d9ecb0001e7de12690896.jpg 到底哪个说的对呢?

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么-1 -2没有输出结果,不是从后面算起的吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信