push用法失效,为什么没有添加到数组中

var arr=[];


for (var i=1 ; i<=total;++i){
    arr.push(i);
    console.log(arr.push(i))

}
console.log(arr)

代码没问题的,console.log打印的是arr的引用【意思就是所有js代码运行完毕后,打印的内容为操作arr后最终结果】,你最后的代码将arr都清空了,所以看到的结果是arr为0,,你要看及时数据用JSON.stringify转为字符后就可以看到内容了。当然你最后的选取代码有问题,看说明,帮助到你可以采纳支持下哦,谢谢~~


    //用户输入猴子个数,和踢几只猴子 
        //最后剩下的为大王 
        var total = prompt('猴子个数');
        var monkey = prompt('踢第几只猴子');
        var head;
        //创建猴子数组 
        var arr = [];
        //给猴子添加编号存入数组,push(),进栈,从底部尾部添加 
        for (var i = 1; i <= total; ++i){
 arr.push(i); //////////////////这里去掉console.log,要不重复压入i的值
 }
        console.log(JSON.stringify(arr))//////////////转为字符,这样就能看到当时的内容了,不是对象引用
        var j = 0
        //报数记录 
        //只要猴子数组大于两个都要报数然后踢 
        while (arr.length >= 2) {/////////////////这里要改为2,为1的话清空数组了
            j++;//猴子报数
            head = arr.shift();
            //,报一个取一个猴子,保存猴子的编号,从1开始,即开头取出shift() 
            //判断猴子是否被踢出,然后未踢出的被加入 
            if (j % monkey != 0) { arr.push(head) }
        }
        document.write("最后的猴子大王的编号为" + arr);
        console.log(arr);

 

确认一下total的值是多少,如果小于1,循环体是不执行的,自然arr就没有东西了

console.log(arr)

改为循环打印就正常了。

for(var i = 0;i<arr.length;i++){

   console.log(arr[i])

}

你这个total值多少

你应该console.log(arr)  而不是 console.log(arr.push(i)), 后者打印是是arr.push(i) 方法的返回值,望采纳

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632