我正在研究 JavaScript 演算法,可以使用一些幫助。我到底在做什么錯?
// 給定一個由 arr、正整數和另一個數字 X 組成的陣列。
// 判斷 arr 中是否存在兩個和正好為 X 的元素。
function keyPair(arr, x){
var sum=false;
var key=0;
var temp=0;
for(var i=0;i<=arr.length;i ){
while(sum=false){
key=arr[i];
arr[i]=temp;
temp=key;
}
if(temp arr[i]==x){
sum=true;
}
}
console.log(sum);
}
keyPair([1,2,4,3,6], 4);
uj5u.com熱心網友回復:
我認為這個值得解釋:
sum=false是一個賦值陳述句。作為一個運算式,賦值陳述句被評估為undefined(不管分配的值如何)。while(sum=false)實際上也是如此while(undefined),它被解釋為while(false)。
uj5u.com熱心網友回復:
您的錯誤是 - 正如多次解釋的那樣 - 錯誤的比較運算子。我冒昧地重寫了涉及.reduce()呼叫的代碼:
function keyPair(arr,sum){
return arr.reduce((a,c,j)=>{
let i=arr.indexOf(sum-c);
if (i>-1 && j<i) a.push([c,arr[i]]);
return a;}, []);
}
console.log(keyPair([1,2,4,3,6], 5));
uj5u.com熱心網友回復:
首先,您可能希望首先考慮將 while(sum=false) 更改為 (sum===false),盡管在 vs 代碼上運行 - 它確實運行。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/425523.html
標籤:javascript 数组 算法 功能 和
上一篇:復制整個物件并更改一個屬性
