簡體   English   中英

如何成功調用此函數以返回值? JSON.parse()來

[英]How do I call this function successfully to return a value? JSON.parse()

我正在嘗試解決規模平衡方面的代碼挑戰。 包含兩個元素的秤,第一個元素是天平上的兩個正整數權重(左側和右側),第二個元素是可用權重列表(正整數)。

例如,如果秤是["[5, 9]", "[1, 2, 6, 7]"] ,則表示存在一個秤,秤的左側重量為5,重量為9。右邊。 規模可以像這樣平衡2,6

條件

  1. 秤的第一個元素只能包含2個砝碼
  2. 可以僅在秤的一側添加兩個砝碼以使其平衡3.如果無法平衡秤,則程序應返回“秤不平衡”。

我已經能夠用硬編碼的值來做功能的console.log並且它起作用了。 此外,如果沒有數字可以平衡,該函數將返回“比例不平衡”。 但是我似乎無法動態調用該函數。

HTML

...
<input type="text" id="balance" required>
...
<input type="text" id="weights" required>

<div class="button" id="calculateWeight" onclick="balanceIt()"> 
<input type="submit" value="Calculate Weight"></div>
<div id="displayResult"></div>

我想成功調用ScaleBalancing函數以返回一個字符串(如果已調用)。 當我嘗試ScaleBalancing([`${[balance]}`, `${[weights]}`])) ,它返回

未捕獲到的SyntaxError:JSON中位於JSON.parse()位置1的意外令牌o

JavaScript的

function ScaleBalancing(strArr) {
let balance = JSON.parse(strArr[0]);
let weight = JSON.parse(strArr[1]);

const one = balance[0]
const two = balance[1];


for (let i = 0; i < weight.length; i++) {
    let weighted = '' + weight[i];
    if (one + weight[i] === two || two + weight[i] === one) {
        //let weighted = '' + weight[i];
        return weighted;
    }
    for (let j = i + 1; j < weight.length; j++) {

        if (one + weight[i] + weight[j] === two ||
            two + weight[i] + weight[j] === one ||
            one + weight[i] === two + weight[j] ||
            two + weight[i] === one + weight[j]
        ) {
            let balancedScale = '' + weight[i] + ',' + weight[j];;
            return balancedScale;

        }
    }

}

return 'scale imbalanced';
}

var balanceIt = function() {
   let weights = document.getElementById("weights").value;
   let balance = document.getElementById("balance").value;
   const Scale = ScaleBalancing([`${[balance]}`, `${[weights]}`]);

 document.getElementById("displayResult").innerText = Scale;
  console.log(Scale);
  };

  document.getElementById("calculateWeight").onclick = balanceIt;

這對我也不起作用。 我所做的是從javascript定義它,因此我確定在調用它之前已確定該方法已定義。

我相信發生的是單擊方法與balanceIt方法不在同一范圍內,這就是為什么它未被識別的原因。

希望對你有幫助

var balanceIt = function() {
  let weights = document.getElementById("weights").value;
  let balance = document.getElementById("balance").value;
  let scale = ScaleBalancing([`${[balance]}`, `${[weights]}`]);

  document.getElementById("displayResult").innerText = scale;
};

document.getElementById("calculateWeight").onclick = balanceIt;

例如,如果您輸入的是“ 1,2”,則

`${[balance]}`

只會導致“ 1,2”,這不是正確的JSON字符串。

相反,您想要的是(請注意不同的方括號位置):

ScaleBalancing([`[${balance}]`, `[${weights}]`]))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM