我使用纯JavaScript在hackerrank
玩,没有额外的数组或数学库,与python
不同,而且非常强大。何时使用sugar.js
或underscore
我在这里找到了这个解决方案,但是如何使用此Array.prototype
数据扩展res
?这sugar.min.js
中的res
位于何处?因为它只包含元数据。
require('http').get({
host: 'cdnjs.cloudflare.com',
path: '/ajax/libs/sugar/1.4.1/sugar.min.js'
}, function(res) {
// how to extend for example Array
Array.prototype = res;
var gs = ['big', 'pig', 'digg'].count(/g$/);
console.log(gs);
});
答案 0 :(得分:2)
您可以像这样向原型添加方法:
Array.prototype.count = function () {
return this.length; //or whatever
}
但看起来您正在尝试使用来自AJAX请求的数据来修改原型。这看起来有点......很奇怪,但如果你通过网络获得函数实现的字符串表示,你就可以做到这一点:
如果我们假设' res'返回此(我不知道是否有):
{
count: "return this.length;"
}
你可以这样做:
require('http').get({
host: 'cdnjs.cloudflare.com',
path: '/ajax/libs/sugar/1.4.1/sugar.min.js'
}, function(res) {
var methods = JSON.parse(res);
Array.prototype.count = new Function(methods.counts);
var gs = ['big', 'pig', 'digg'].count(/g$/);
console.log(gs);
});
我没有尝试过,但理论上应该这样做。虽然这是一个非常奇怪的想法(用网络请求的结果修改你的环境和内置插件),所以这可能不是你的意思。