我正在尝试解决此代码在规模平衡方面的挑战。包含两个元素的秤,第一个是天平上的两个正整数权重(左侧和右侧),第二个元素是可用权重列表(正整数)。
例如,如果一个秤是["[5, 9]", "[1, 2, 6, 7]"]
,则表示有一个秤,秤的左侧为5,右侧为9。规模可以像这样2,6
条件
我已经能够使用硬编码的值来完成功能的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中位置1处的意外令牌o 在JSON.parse()
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;
答案 0 :(得分:1)
它对我也不起作用。我所做的就是从javascript定义它,因此我确定在调用它之前就已经确定了该方法。
我相信所发生的是on click方法与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 :(得分:1)
例如,如果您输入的是“ 1,2”,则
`${[balance]}`
只会导致“ 1,2”,这不是正确的JSON字符串。
您想要的可能是(请注意方括号的不同位置):
ScaleBalancing([`[${balance}]`, `[${weights}]`]))