我有一个具有PrimeNumber模块依赖注入的模块。对于我隐藏在你的应用程序中的其他部分,我一直坚持这样做,这就是我想要实现的目标:
让所有人都能看得更清楚。我已经展示了我想要实现的目标:
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;
答案 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]) }
});
}