console.log输出的数组与真实不一致

 /*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;
}

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

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

直接打印字符串


console.log(JSON.stringify(rabbit));