Javascript二进制搜索原型数组
Javascript Binary Search prototype Array
首先创建三个函数,作为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行为的期望,如果这是一件流行的事情,库和代码将不断地覆盖自己。只需构建自己的列表类型,使用数组,而不使用数组本身。你能做到并不意味着你应该去做。
相关文章:
- 为什么不't loadash/aunderline将util方法放在数组原型上
- 用于数组原型的JavaScript独特方法
- 在JavaScript中更改数组原型
- 如何在数组原型图中获取当前索引
- 将数组原型函数与非数组一起使用
- Javascript:分配给对象或数组原型会导致括号不起作用
- Javascript 自定义数组原型
- 为什么在 javascript 中向数组原型添加方法会破坏 for 循环上的迭代
- 使用数组原型Slice调用
- 如何通知TypeScript编译器JS数组原型的扩展
- 在数组原型中循环
- 如何在我自己的数组原型函数中使用数组函数
- JavaScript数组.原型如何设置'this'到由方法获得的新数组
- 修改数组原型会导致foreach的行为不同
- JS函数给数组.原型被视为数组属性
- JavaScript数组原型,'this'没有'push'方法
- 由于将比较方法添加到数组原型而导致测试失败.如何更新代码或测试?
- 字符串vs数组原型Javascript
- 如何创建一个Javascript哈希表/关联数组原型
- 扩展数组.原型在Node.js中,从一个require'd文件