簡體   English   中英

數組函數在位置返回零的數字

[英]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.

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