小编i_m*_*hat的帖子

茉莉花对象"没有方法"和"返回"

Jasmine的初学者,与Jasmine Spies的第一次尝试.我以为我在模仿这里显示的格式(搜索:"andReturn"),但我收到一个错误,我无法解决:

TypeError: Object function () {
        callTracker.track({
          object: this,
          args: Array.prototype.slice.apply(arguments)
        });
        return spyStrategy.exec.apply(this, arguments);
      } has no method 'andReturn'
Run Code Online (Sandbox Code Playgroud)

不知道我做错了什么.这是我的规格:

describe('Die', function() {
    it('returns a value when you roll it', function() {
        var die = Object.create(Die);
        spyOn(Math, 'random').andReturn(1);
        expect(die.roll()).toEqual(6);
    });
});
Run Code Online (Sandbox Code Playgroud)

和相应的JS:

var Die = 
{   
    roll: function() {
        return Math.floor(Math.random() * 5 + 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助!!!

javascript tdd unit-testing jasmine

24
推荐指数
2
解决办法
9926
查看次数

Array.prototype.filter(Number)中的"Number"如何工作?

我找到了使用该Array.prototype.filter方法从字符串中删除所有非数字的这种很酷的方法,但我不完全确定它是如何使用Number原型来实现的:

var arr = '75number9';

arr.split(/[^\d]/).filter(Number); // returns [75, 9]
Run Code Online (Sandbox Code Playgroud)

当我检查typeof Number我回来'function'.这里发生了什么?

这进一步增加了我的困惑是,如果我替换NumberString,结果都是一样的.它仍然有效!

arr.split(/[^\d]/).filter(String); // returns [75, 9]
Run Code Online (Sandbox Code Playgroud)

ArrayObject作为参数,而另一方面,返回此:

["75", "", "", "", "", "", "9"]
Run Code Online (Sandbox Code Playgroud)

非常好奇明白这一点!

javascript arrays

10
推荐指数
1
解决办法
197
查看次数

如何清除Dr. Racket IDE中的解释器屏幕?

刚刚开始进入The Little Schemer,并有一个非常基本的Dr. Racket IDE问题:

  1. 如何清除翻译屏幕?

  2. 如何设置向上箭头以显示以前键入的项目(如在Bash中)而不是当前滚动屏幕的行为?

我的搜索空白,可能是因为我不知道这些操作的技术术语.

lisp ide scheme the-little-schemer racket

9
推荐指数
1
解决办法
4745
查看次数

forEach on a new Array'没有达到我的预期

我只是学习如何使用JS高阶函数(map,forEach,reduce等),并且偶然发现了混乱.我正在尝试编写一个简单的"范围"函数,但似乎无法填充我的输出数组.这是目标:

range(1, 4) // [1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

我明白了:

[undefined × 4]
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

 function range(num1, num2) {
      var rangeArr = new Array((num2 + 1) - num1);
      return rangeArr.map(function(e, i, arr) {return arr[i] = num1 + i});
    }
Run Code Online (Sandbox Code Playgroud)

我在这里错过了什么?据我所知,这个问题似乎与我使用"新数组"的方式有关,但除此之外,我已经迷失了.

哦,这是让我困惑的部分.这很好用:

function bleck() {
    var blah = [1, 2, 3, 4];
    var x = 'wtf';
    return blah.map(function(e, i, arr) {return arr[i] = x})
}

["wtf", "wtf", "wtf", "wtf"]
Run Code Online (Sandbox Code Playgroud)

谢谢!!

javascript arrays higher-order-functions

6
推荐指数
1
解决办法
99
查看次数

Javascript递归 - >返回跟踪是什么样的?

所以,我刚刚开始探索递归,并且我有点卡在一个概念上.这是我找到的一个求和函数的函数(f(126)= 1 + 2 + 6 = 9):

function sumDigits(num, sum){
if (num === 0) {
    return sum;
} else {
    sum += num % 10;
    num = Math.floor(num / 10);
    return sumDigits(num, sum);
}}
Run Code Online (Sandbox Code Playgroud)

我追溯到基地,到目前为止一切都有意义:

**Trace**
f(126, 0)
    {
    sum = 6
    num = 12
    f(12, 6)
    }
f(12, 6)
    {
    sum = 8
    num = 1
    f(1, 8)
    }
f(1, 8)
    {
    sum = 9
    num = 0
    f(0, 9)
    }
f(0, 9) = 9
Run Code Online (Sandbox Code Playgroud)

我想对我来说没有意义的是基础情况如何在展开期间传回来?它到底是怎么旅行的?

我期待一个facepalm,但直到我明白我不认为我可以复制这个解决方案.

谢谢你的帮助!

javascript recursion

4
推荐指数
1
解决办法
79
查看次数

为什么JavaScript重新排序我的对象?

由于某种原因,这个功能:

function returnDoubled (numArray) {
        var newObj = {};
        for (var i = 0; i < numArray.length; i++) {
            newObj[numArray[i]] = numArray[i] * 2;
        }
        return(newObj);
    }

    console.log(returnDoubled([0, 17, 3, 1, -1, 12, 7]));
Run Code Online (Sandbox Code Playgroud)

在我的控制台中返回以下内容:

Object {0: 0, 1: 2, 3: 6, 7: 14, 12: 24, 17: 34, -1: -2} 
Run Code Online (Sandbox Code Playgroud)

对我来说似乎很奇怪.为什么JavaScript选择按此顺序排列newObj对象而不是我最初传递给它的数组中指定的那个?

谢谢!

javascript

3
推荐指数
1
解决办法
87
查看次数

Javascript - >如何递归添加数组?

我似乎无法弄清楚这段代码有什么问题 - >不断抛出"超出最大调用堆栈大小"错误.

function arrayIntSum(array) {
    if (array === []){
        return 0;
    }
    else return array.shift() + arrayIntSum(array); 
} 
Run Code Online (Sandbox Code Playgroud)

javascript recursion

0
推荐指数
1
解决办法
1099
查看次数