Javascript对象返回未定义的传递密钥

时间:2018-01-03 06:20:34

标签: javascript dictionary javascript-objects

我正在尝试构建一个JS对象,这样当我将一个密钥(帐号)传递给我的函数时,它会返回相应的值(帐户余额)。但是当我运行代码时,它会给出undefined。

<!DOCTYPE html>
<html>
<title>Web Page Design</title>
<head>
<script>

var accountNumbers = {};
acccountNumbers = {
    "100002149056": 250000.23,
    "100002149056": 11234567.98,
    "100027837199": 100000.98,
    "100027837289": 9567.98,
    "100027837299": 34567.98
}

function returnBalance(accountNo){
    var balance = 0.000;
    for (var acn in accountNumbers){
        if(accountNumbers.hasOwnProperty(acn)){
            balance = accountNumbers[acn];
            break;
        }
        return balance;
    }
}

console.log("Balance in acount no 100002149056 is: " +returnBalance("100002149056"));
</script>
</head>
<body>
</body>
</html>

有人可以指出我做错了什么吗?

5 个答案:

答案 0 :(得分:1)

&#13;
&#13;
var accountNumbers = {"100002149056": 250000.23,
    "100002149056": 11234567.98,
    "100027837199": 100000.98,
    "100027837289": 9567.98,
    "100027837299": 34567.98};
    
function returnBalance(accountNo){
    var balance = accountNumbers[accountNo];
    if(!balance)
      balance = 0.000;
    return balance;
}

console.log("Balance in account no 100027837299 is: " +returnBalance("100027837299"));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

这里创建了两个对象: acccountNumbersaccountNumbers。拼写错误导致此问题。 此外,代码没有意义。请解释一下你在这里想要达到的目标。下面的代码会给你一些有意义的东西,但它可以改进,因为不需要循环。

function returnBalance(accountNo){
var balance = 0.000;
for (var acn in accountNumbers){
    if(accountNumbers.hasOwnProperty(accountNo)){
        balance = accountNumbers[accountNo];
        break;
    }
}
return balance;

}

答案 2 :(得分:0)

  

有人可以指出我做错了什么吗?

多件事

  • 您将从for-loop返回,此语句将在第一次迭代后执行。

  • 您根本没有检查参数accountNo

只是做到了

function returnBalance(accountNo){
    return accountNumbers[ accountNo ] || 0.000;
}

答案 3 :(得分:0)

循环整个对象是错误的,只需检查对象是否包含您想要的密钥(在您的情况下为帐号),然后相应地返回该值。

 function returnBalance(accountNo) {
    var balance = 0.000;

    if (acccountNumbers.hasOwnProperty(accountNo))
        balance = acccountNumbers[accountNo];

    return balance;
 }

答案 4 :(得分:0)

你在for循环中返回,一旦你打电话打破它就跳过你的return语句。这里我在for循环之外移动了return语句。

Uncaught ReferenceError: jQuery is not defined
    at jquery-ui-1.10.2.js:314
(anonymous) @ jquery-ui-1.10.2.js:314
chosen.jquery.min.js:2 Uncaught ReferenceError: jQuery is not defined
    at chosen.jquery.min.js:2
    at chosen.jquery.min.js:2
(anonymous) @ chosen.jquery.min.js:2
(anonymous) @ chosen.jquery.min.js:2
(index):144 Uncaught TypeError: $(...).autocomplete is not a function
    at HTMLDocument.<anonymous> ((index):144)
    at fire (jquery-1.10.2.js:3062)
    at Object.fireWith [as resolveWith] (jquery-1.10.2.js:3174)
    at Function.ready (jquery-1.10.2.js:447)
    at HTMLDocument.completed (jquery-1.10.2.js:118)