创建新的原型以搜索任何数组并返回字符串

时间:2019-07-16 20:43:26

标签: javascript arrays

需要遍历存储在变量中的单词数组。我创建了Array.prototype.findWord,以便可以在程序中的任何数组中搜索任何单词。

我让我的findWord(str,arr)将字符串和数组作为参数。然后我遍历了传递的数组。如果传递的字符串与数组中的字符串匹配,它将记录该字符串。

Array.prototype.findWord = function(str, arr) {
  //   let returnWord = "";
  str = "";
  arr = [];

  for (let i = 0; i < arr.length; i++) {
    if (arr[i] === str) {
      return str;
    }
  }

这通过未定义。

2 个答案:

答案 0 :(得分:1)

如果我正确理解了您的问题,则想返回数组中的第一个匹配项。由于您正在创建原型方法,因此不需要将数组作为参数传递。在类的实例(在本例中为数组)上调用原型方法。因此,您将这样调用方法:

['lorem', 'ipsum', 'dolor'].findWord('ipsum');

原型方法将需要重写引用this,而不是传递的arr

Array.prototype.findWord = function(str) {
  for (let i = 0; i < this.length; i++) {
    // if they match
    if (this[i] === str) {
      return str;
    }
  }
}

希望这会有所帮助。

答案 1 :(得分:0)

在决定扩展数组原型之前,请先阅读JavaScript: What dangers are in extending Array.prototype?

如果您决定以任何方式扩展它,则将其称为myArray.findWords('word')

数组本身现在是函数的this。希望有帮助

Array.prototype.findWord = function(str) {
  for (let i = 0; i < this.length; i++) {
    if (this[i] === str) {
      return str
    }
  }
}

let myArray = ['one', 'two', 'three']
myArray.find('one')
myArray.find('x')