2 danggaojue7107 danggaojue7107 于 2017.09.10 13:55 提问

console.log输出的数组与真实不一致
js
 /*n元买n个兔子问题*/
function exhaustiveSearch(n) {
    cases=new Array();
    rabbit = new Array();
    rabbit["male"] = 0;//公兔数量
    rabbit["female"] = 0;//母兔数量
    rabbit["child"] = 0;//雏兔数量
// 公兔一只5元,则一定少于n/5只
    for (rabbit["male"] = 0; rabbit["male"] < n / 5; rabbit["male"]++) {
        //母兔一只3元,则一定少于n/3只
        for (rabbit["female"] = 0; rabbit["female"] < n / 3; rabbit["female"]++) {
            // 雏兔数量一定是n-母兔-公兔
            for (rabbit["child"] = (n - rabbit["male"] - rabbit["female"]); rabbit["child"] < n; rabbit["child"]++) {
                // console.log("总数相等了");
                if (rabbit["child"] % 3 == 0) {
                    // console.log("小兔一元三只");
                    if (rabbit["male"] * 5 + rabbit["female"] * 3 + rabbit["child"] / 3 == n) {
                        console.log(rabbit);//**输出**
                        cases.push(rabbit);
                    }
                }
            }
        }
    }
    // console.log(cases);
    return cases;
}

这是输出
图片说明
所以,为何上下的输出不一致呢

1个回答

showbo
showbo   Ds   Rxr 2017.09.10 19:38

chrome控制台打印对象是引用的,默认没有展开,展开后就是最后修改的值,所以出现[.....]的值不同,展开一样的 问题,你看最后有个感叹号,就是提示这个用的

直接打印字符串


console.log(JSON.stringify(rabbit));
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
项目常见错误及解决方法-console.log打印数组,数组有元素但长度为0
在项目中,使用restangular,在成功回调函数中,给数组复制,同时,返回给一个数组变量,在函数后面,打印出现: 数组为空,但是点开又有数据,最终找到原因: 因为开始空数组没赋值,赋值之后,因为是地址引用,那个数组已经被修改了。显示零是原来的长度。但包含修改后的结果。换句话说,就是由于restangular异步请求数据,在执行restangular时(由于异步,此时,开始回调函数还
在JavaScript中使用console.log打印对像、数组等调试代码
js console.log 打印 对像 数组 详解 console.log是什么东西,其实就是一个打印js数组和对像的函数而已,就像是php的print_r,var_dump。console.log这个函数本身没什么好说的,这篇博客告诉大家怎么去用这个函数。在说这个函数之前,我想大家用的最多查看js输出,是alert吧,但是alert,只能弹string或者是int的
nodejs中console.log输出数组显示[Circular]
昨天做了一个数组删除所有给
慎用console.log(),这个方法打印出来的东西,有时候是错误的。 so amazing。。。你真的了解console.log()吗,它不是同步的,即不是实时的,不是实时的,不是实时的
慎用console.log(),这个方法打印出来的东西,有时候是错误的。 在此记录一下。 同一个jQuery对象$n,如下两种方式出来的东西,不一样! alert($n.prop("outerHTML")); console.log($n); 两种方式,返回的jQuery对象$n的属性列都不一样。 我是在使用jQuery 的datatable
js数组json console.log()的时候显示{object}
需要进行解析,使用JSON.stringify(array);
javascript 和 jq 的调试 用console.log() 函数
对于JavaScript程序的调试,相比于alert(),使用console.log()是一种更好的方式,原因在于:alert()函数会阻断JavaScript程序的执行,从而造成副作用;而console.log()仅在控制台中打印相关信息,因此不会造成类似的顾虑。 用法: 代码如下:window.console.log("Sample log"); 上述代码可以忽略window
js的打印(输出)方式console.log(),console.dir(),console.table()
js的打印方式 js的弹出类型
谷歌console可以输出对象,js用cosole.log输出为不存在
bug描述 var fansItem = document.getElementsByClassName(&quot;fansItem&quot;); funciton fans() { console.log(fansItem[0]); } fans(); 在js文件中此段代码输出的对象为不存在,但是我在开发者工具console却可以输出他。而且改为console.log(fansItem)也可以输...
js调试console.log使用总结图解
一 实例 二 Console.log 总结 1 如果你js没到一个境界,我就算教你调试bug,破解一些插件之类的,你也根本不知道我在做什么。我的目的只是让你认识控制台,让你入门调试,之后的路还得靠你们自己走。 不论是 chrome firefox ie(8以上版本) 还是
Javascript数组Array的forEach方法
Javascript数组Array的forEach方法   Javascript数组Array的forEach扩展方法 forEach是最常用到的数组扩展方法之一,相当于参数化循环数组,它简单的在数组的每一个元素上应用传入的函数,这也意味着只有存在的元素会被访问和处理。    如果我们用console.log替换处理函数,将可以得到另外的有趣结果: [1,2,3,"csser"].forEach