将哈希值转换为返回'true或false',无论它是素数

时间:2017-11-27 11:53:53

标签: javascript

我有一个具有PrimeNumber模块依赖注入的模块。对于我隐藏在你的应用程序中的其他部分,我一直坚持这样做,这就是我想要实现的目标:

  1. 将计数项(哈希)的返回结果作为参数传递给primeNumber
  2. 使用PrimeNumber模块中的函数迭代哈希值以查看数字是否为素数
  3. 将键'prime添加到哈希'并将值'true或false'
  4. 添加

    让所有人都能看得更清楚。我已经展示了我想要实现的目标:

     function Bananas(primenumber = new PrimeNumber) {
      this._primenumber = primenumber}
    
     Bananas.prototype.count = function(words) {
          return words.reduce((dict, v) => {dict[v] = v in dict ? dict[v] + 1 : 1; return dict}, {});
    
      }
    

    将[“monkey”,“monkey”,“love”,“banana”,“banana”]传递给上述函数的结果将是{ monkey: 2, love: 1, banana: 2 }

    我正在尝试实现以下功能的输出:

     Bananas.prototype.primeNumber = function((Result of count)) {
          this._primenumber.isPrime(Result of count)
          return {monkey: 3, prime: true,
                  elephant: 8, prime: false} <--- This is what I want to achieve
      }
    

    PrimeNumber:

    function PrimeNumber(){}
    
    PrimeNumber.prototype.isPrime = function(num) {
      for(var i = 2; i < num; i++)
      if(num % i === 0) return false
      return num !== 1
    }
    
    module.exports = PrimeNumber;
    

2 个答案:

答案 0 :(得分:0)

我认为这是你要在这里实现的目标:

<强>输入

{ monkey: 2, love: 1, banana: 2 }

<强>输出

[ { monkey: 2, prime: true }, { love: 1, prime: true }, { banana: 2, prime: true } ]

因为在你的问题中回复你提到的东西是没有意义的。您无法复制对象中的键。因此,对于更改后的函数,函数可以这样写:

Bananas.prototype.primeNumber = function(counts) {
  return Object.keys(counts).map(function(key) {
    var result = {};
    result[key] = counts[key];
    result.prime = this._primenumber.isPrime(counts[key]);
    return result;
  });
}

它遍历计数对象中的键,并且对于每个键,它返回一个包含一个附加键prime的对象。我假设函数isPrime工作正常。

答案 1 :(得分:0)

您只需要迭代键并返回一个prime作为新属性

的对象
Bananas.prototype.primeNumber = function(countResult) {
  var self = this;
  return Object.keys(countResult).map( function(key){
      return { [key] : countResult[key], prime : self._primenumber.isPrime(countResult[key]) }
  });      
}