为什么我的函数返回不同于我的console.log()在Chrome浏览器
Why is my function return different than my console.log() in Chrome browser
我完全懵了。我甚至不知道我问这个问题是否正确。这是我的回答>它http://repl.it/BAQ0/151console.log
和return
是我所期望的。但是当我将代码放入我的代码编辑器窗口进行培训时,我从console.log
获得[array[2]]
,我的代码不会通过。我在repl>it中的代码下面添加了未通过的测试。我错过了什么?谢谢!
var values = {
'ONE HUNDRED':10000,
'TWENTY':2000,
'TEN':1000,
'FIVE':500,
'ONE':100,
'QUARTER':25,
'DIME':10,
'NICKEL':5,
'PENNY':1
};
var change = [];
var array = [];
function multValuesBy100(arr) {
//return arr with larger values
for(var i = 0; i < arr.length; i++) {
arr[i][1] *= 100;
}
return arr;
}
function giveChange(changeDue,arr) {
var rem = changeDue;
for(var key in values) {
var n = Math.floor(rem/values[key]);
if(n !== 0) {
change.push([key, ((n*values[key])/100)]);
}
rem = changeDue % values[key];
}
console.log(change);
return change;
}
function changeInDrawer(cid) {
//returns a number representing the amount of change in the drawer
var result = 0;
for(var i = 0; i < cid.length; i++) {
result += cid[i][1]*100;
}
return result;
}
function drawer(price, cash, cid) {
price *= 100;
cash *= 100;
var changeDue = cash - price;
// Here is your change, ma'am.
if(changeInDrawer(cid) < changeDue) {
return "Insufficient Funds";
} else if(changeInDrawer(cid) === changeDue) {
return "Closed";
} else {
return giveChange(changeDue, cid);
}
}
// Example cash-in-drawer array:
// [['PENNY', 1.01],
// ['NICKEL', 2.05],
// ['DIME', 3.10],
// ['QUARTER', 4.25],
// ['ONE', 90.00],
// ['FIVE', 55.00],
// ['TEN', 20.00],
// ['TWENTY', 60.00],
// ['ONE HUNDRED', 100.00]]
drawer(19.50, 20.00, [['PENNY', 1.01], ['NICKEL', 2.05], ['DIME', 3.10], ['QUARTER', 4.25], ['ONE', 90.00], ['FIVE', 55.00], ['TEN', 20.00], ['TWENTY', 60.00], ['ONE HUNDRED', 100.00]]);
//------------------ Test below -----------------//
/*assert.deepEqual(drawer(19.50, 20.00, [['PENNY', 1.01], ['NICKEL', 2.05], ['DIME', 3.10], ['QUARTER', 4.25], ['ONE', 90.00], ['FIVE', 55.00], ['TEN', 20.00], ['TWENTY', 60.00], ['ONE HUNDRED', 100.00]]), [['QUARTER', 0.50]], 'return correct change');return correct change: expected [ Array(2) ] to deeply equal [ [ 'QUARTER', 0.5 ] ]*/
可能是因为您从giveChange
中定义了change
,所以如果测试人员之前运行了其他内容,那么可能在您运行当前测试时,更改已经具有由先前测试推送的一些值。
试着在giveChange
中声明,这样就像:
function giveChange(changeDue,arr) {
// Ensure we use a pure array.
var change = [];
var rem = changeDuem;
for(var key in values) {
var n = Math.floor(rem/values[key]);
if(n !== 0) {
change.push([key, ((n*values[key])/100)]);
}
rem = changeDue % values[key];
}
console.log(change);
return change;
}
另一点是[array[2]]
是未扩展格式时,chrome
日志object
或array
,其中包含非原语类型。Repl。它应该只是为了方便用户阅读而展开,结果应该是一样的。
相关文章:
- 在我的浏览器中用类似ctrl+s的PhantomJS保存一个网站
- 为什么这会造成一个无休止的循环并使我的浏览器崩溃
- 转换链接在jsfiddle中有效,但在我的浏览器上无效
- jQuery在我的网站上不起作用,但在我的浏览器上起作用
- AngularJS错误:$injector:modulerr我的浏览器窗口中出现模块错误
- JavaScript函数冻结我的浏览器
- 给我的浏览器一个可通过javascript访问的全局变量
- 如何将我的浏览器上播放的实时视频流式传输到其他用户的浏览器
- 为什么这段Javascript代码在我的浏览器上不起作用
- 为什么我的浏览器化任务两次附加导出的结尾
- 变量在 iPad 上可以未定义与在我的浏览器中定义的原因
- setInterval 在运行用户脚本时使我的浏览器崩溃
- Javascript/Jquery代码使我的浏览器崩溃
- JavaScript函数使我的浏览器崩溃
- 使用我的浏览器扩展程序更改谷歌搜索页面的背景
- AngularJS -- 视图不会在我的浏览器中呈现
- Gulp.js浏览器同步不重新加载我的浏览器
- JavaScript没有'在我的浏览器中不起作用,但在CodePen中起作用
- 我的浏览器没有'I don’我不认为我的Javascript是..Javascript
- 如何在我的浏览器窗口中删除#,以及如何更改我网站中的动态url