Skip to content

Instantly share code, notes, and snippets.

View cuipengfei's full-sized avatar
:octocat:

崔鹏飞 Cui Pengfei cuipengfei

:octocat:
View GitHub Profile
@cuipengfei
cuipengfei / notreallyasolution.js
Last active December 31, 2015 09:59
functional js trampoline
function repeat(operation, num) {
if (num <= 0) {
return num
}
else {
operation()
num--
return num
}
}
@cuipengfei
cuipengfei / official solution.js
Last active December 31, 2015 09:49
functional js blocking event loop
function repeat(operation, num) {
if (num <= 0) return
operation()
// release control every 10 or so
// iterations.
// 10 is arbitrary.
if (num % 10 === 0) {
setTimeout(function() {
@cuipengfei
cuipengfei / official solution.js
Last active January 4, 2021 17:05
functional js function spies
function Spy(target, method) {
var originalFunction = target[method]
var result = {
count: 0
}
target[method] = function() {
result.count++
return originalFunction.apply(target, arguments)
}
@cuipengfei
cuipengfei / ImplementMapwithReduce.js
Created December 15, 2013 06:07
Implement Map with Reduce
module.exports = function arrayMap(arr, fn) {
return arr.reduce(function (acc, current) {
acc.push(fn(current))
return acc
}, [])
}
@cuipengfei
cuipengfei / bind.js
Last active December 31, 2015 09:49
functional js partial application
module.exports = function(namespace) {
return console.log.bind(console, namespace)
}
@cuipengfei
cuipengfei / bettersolution.js
Last active October 24, 2016 00:36
functional js count ducks
function duckCount() {
return Array.prototype.slice.call(arguments).filter(function(obj) {
return Object.prototype.hasOwnProperty.call(obj, 'quack')
}).length
}
module.exports = duckCount
@cuipengfei
cuipengfei / copycat.js
Last active December 31, 2015 08:19
functional js implement reduce
module.exports = function reduce(arr, fn, initial) {
function justDoOne(index, value) {
if (index >= arr.length) {
return value
}
return justDoOne(index + 1, fn(value, arr[index]))
}
return justDoOne(0, initial)
}
@cuipengfei
cuipengfei / countStrings.js
Created December 14, 2013 13:30
functional js reduce
module.exports = function countWords(arr) {
return arr.reduce(function(prev, curr) {
prev[curr] = prev[curr] + 1 || 1
return prev
}, {})
}
@cuipengfei
cuipengfei / jsonMe.js
Created December 14, 2013 12:14
express work json me
var express = require('express')
var fs = require('fs')
var app = express()
app.get('/books', function (req, res) {
fs.readFile(process.argv[3], function (err, data) {
var jsonFromFile = JSON.parse(data.toString());
res.json(jsonFromFile)
})
@cuipengfei
cuipengfei / whatIsInQuery.js
Created December 14, 2013 11:39
express work what is in query string
var express = require('express')
var app = express()
app.get('/search', function (req, res) {
res.send(req.query)
})
app.listen(process.argv[2])