[英]Array function with number at position returning zero
我是javascript新手,正在下面嘗試此代碼。
這段代碼可以正常工作,但現在看來只返回-1。
Array.prototype.nthIndexOf = function (element,location) { var index = -1; for(var i=0; i< this.length; i++) { if(element === this[i] && !--location) { index = i; break; } } return index; } var findNumber = prompt("Please enter number to be found"); var positionAt = prompt("Please enter position"); var position = [1, 2, 3, 3, 2, 89, 34, 12].nthIndexOf(findNumber, positionAt); console.log(position); // position is -1 all the time
當從提示輸入中獲取字符串值時,必須使用parseInt()將從提示中獲取的值轉換為數字。
請閱讀此頁面: -https : //developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/parseInt
這也是: -parseInt()和parseFloat()之間的區別
Array.prototype.nthIndexOf = function (element,location) { var index = -1; for(var i=0; i< this.length; i++) { if(element === this[i] && !--location) { index = i; break; } } return index; } var findNumber = parseInt(prompt("Please enter number to be found")); var positionAt = parseInt(prompt("Please enter position")); // The type of operator will tell you type of object you are getting // Remove parseInt above and check console log you will get string for findNumber type console.log(typeof findNumber); var position = [1, 2, 3, 3, 2, 89, 34, 12].nthIndexOf(findNumber, positionAt); if(position !== -1) { console.log(findNumber + " located at " + position); }else { console.log("Occurrence " + positionAt + " of number " + findNumber + " not found"); }
當前,它正在與prompt()
的字符串值進行比較。 它總是返回一個字符串,並且您還在進行===
嚴格比較,包括類型。 使用parseInt()
以便正確進行類型轉換。
Array.prototype.nthIndexOf = function(element, location) {
var index = -1;
element = parseInt(element, 10);
for (var i = 0; i < this.length; i++) {
if (element === parseInt(this[i]) && !--location) {
index = i;
break;
}
}
return index;
}
片段
Array.prototype.nthIndexOf = function(element, location) { var index = -1; element = parseInt(element, 10); for (var i = 0; i < this.length; i++) { if (element === parseInt(this[i]) && !--location) { index = i; break; } } return index; } var findNumber = prompt("Please enter number to be found"); var positionAt = prompt("Please enter position"); var position = [1, 2, 3, 3, 2, 89, 34, 12].nthIndexOf(findNumber, positionAt); console.log(position); // position is -1 all the time
除了所有這些,您還可以使用Array.prototype.indexOf
!
您需要使用Number()將值從提示更改為數字。 提示總是返回字符串值。
Array.prototype.nthIndexOf = function (element,location) { var index = -1; for(var i=0; i< this.length; i++) { if(element === this[i] && !--location) { index = i; break; } } return index; } var findNumber = prompt("Please enter number to be found"); var positionAt = prompt("Please enter position"); var position = [1, 2, 3, 3, 2, 89, 34, 12].nthIndexOf(Number(findNumber), Number(positionAt)); console.log(position); // position is -1 all the time
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.