返回第n

时间:2019-06-30 03:32:23

标签: javascript arrays

我正在用摩卡咖啡进行测试,并且正在学习中。问题是“返回数组的第n个值”,尽管摩卡继续给我这个错误 ”应将元素返回到该位置:      AssertionError [ERR_ASSERTION]:未定义== 0“

我真的不明白这个问题。恰好是数组的第n个位置。

x(p) {
 if(this.items[p-1]==="undefined"){
   throw new Error('out');
    }else{

     return this.items[p-1];

    }

  }

//摩卡测试代码

describe('#get(i)', function() {
    var sl;
    beforeEach(function(){
      sl = new SortedList();
    });

    it('should return an OutOfBounds exception if there is no element in that position', function() {
      try {
        sl.get(20);
      } catch (e) {
        assert.equal(e instanceof Error, true)
        assert.equal(e.message, "OutOfBounds")
        assert.throws(sl.get, Error, '/OutOfBounds/');
      }
    });

    it('should return the element in that position', function() {
      var foo = 10;
      for(let i=0; i<200; i++) {
        sl.add(foo*i);
        assert.equal(sl.get(i), foo*i);
      }
    });
  });

2 个答案:

答案 0 :(得分:0)

您只需要返回this.items[p - 1]。数组的索引为0,这就是为什么需要- 1的原因。如果传递的值p是一个索引,则只需使用p

x(p) {
  return this.items[p - 1];
}

或者:

x(p) {
  return this.items[p];
}

答案 1 :(得分:0)

尝试一下

x(p) {
 if(!this.items[p-1]){
   throw new Error('out');
 }else{
     return this.items[p-1];
 }
}