Javascript二进制搜索原型数组

Javascript Binary Search prototype Array

本文关键字:数组 原型 搜索 二进制 Javascript      更新时间:2023-09-26

首先创建三个函数,作为Array类的原型,返回以下内容:

toTwenty()` returns `[1, 2, 3 . . . 20]
下面是测试用例
describe('Binary Search to traverse an ordered list, effectively', function() {
  describe('Populate the arrays with valid content', function() {
    it('should create an array from 1 to 20, with intervals of 1', function() {
      expect(oneToTwenty[0]).toBe(1);
      expect(oneToTwenty[19]).toBe(20);
      expect(oneToTwenty.length).toBe(20);
      for(var i = 0; i < oneToTwenty.length - 1;i++) {
        expect(oneToTwenty[i + 1] - oneToTwenty[i]).toBe(1);
     }
    });

下面的代码是我的代码但是我一直得到

var oneToTwenty = [].toTwenty();
"TypeError: Object  has no method 'toTwenty'"

这是我的代码

function oneToTwenty(){
}
oneToTwenty.prototype.toTwenty = function(){
    var start = 1;
    var end = 20;
    var oneToTwenty = [];
for(var i = start; i <= end; i += 1){
    oneToTwenty.push(i);
}
   return oneToTwenty;
}

这个var oneToTwenty = [].toTwenty();让我认为你试图改变数组原型,而不是创建一个新的类型。你不能覆盖数组字面量的含义,但是你可以给原生类型添加方法:

Array.prototype.toTwenty = function(){
    var start = 1;
    var end = 20;
    for(var i = start; i <= end; i += 1){
        this.push(i);
    }
   return this;
}
var oneToTwenty = [].toTwenty();
console.log(oneToTwenty); // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

然而,我不认为这是个好主意。更改原生JavaScript类型可能会干扰其他库对JavaScript行为的期望,如果这是一件流行的事情,库和代码将不断地覆盖自己。只需构建自己的列表类型,使用数组,而不使用数组本身。你能做到并不意味着你应该去做。