🚀 Big News: Socket Acquires Coana to Bring Reachability Analysis to Every Appsec Team.Learn more
Socket
Sign inDemoInstall
Socket

reduce

Package Overview
Dependencies
Maintainers
2
Versions
6
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

reduce - npm Package Compare versions

Comparing version

to
0.1.2

.travis.yml

5

index.js
module.exports = reduce
var objectKeys = require('object-keys');
function reduce(list, iterator, context, accumulator) {
var keys = Object.keys(list)
var keys = objectKeys(list)
, i = 0

@@ -25,1 +27,2 @@

}

28

package.json
{
"name": "reduce",
"version": "0.1.0",
"version": "0.1.2",
"description": "A better [].reduce",

@@ -19,6 +19,7 @@ "keywords": [],

},
"dependencies": {},
"dependencies": {
"object-keys": "~0.2.0"
},
"devDependencies": {
"tap": "~0.3.1",
"sinon": "~1.4.2"
"tape": "~1.0.2"
},

@@ -31,5 +32,22 @@ "licenses": [

],
"testling": {
"files": "test/*.js",
"browsers": [
"iexplore/6.0..latest",
"firefox/3.0..6.0",
"firefox/15.0..latest",
"firefox/nightly",
"chrome/4.0..10.0",
"chrome/20.0..latest",
"chrome/canary",
"opera/10.0..latest",
"opera/next",
"safari/4.0..latest",
"ipad/6.0..latest",
"iphone/6.0..latest"
]
},
"scripts": {
"test": "tap --stderr --tap ./test"
"test": "node test/simple.js"
}
}
# reduce [![build status][1]][2]
A better [].reduce
[![browser support][3]][4]

@@ -40,1 +40,4 @@ ## Example

[2]: http://travis-ci.org/Raynos/reduce
[3]: https://ci.testling.com/Raynos/reduce.png
[4]: https://ci.testling.com/Raynos/reduce

@@ -1,3 +0,2 @@

var test = require("tap").test
, sinon = require("sinon")
var test = require("tape")
, reduce = require("..")

@@ -7,12 +6,27 @@

var item = createItem()
, iterator = sinon.spy(function (acc, v) {
acc.key += v
, timesCalled = 0
, accumulator = { key: '' }
, expectedKeys = ['a', 'b', 'c']
, expectedValues = ['a1', 'b1', 'c1']
, expectedAccumulatorKeys = ['', 'a1', 'a1b1', 'a1b1c1']
, iterator = function (acc, value, key, list) {
var expectedKey = expectedKeys[timesCalled]
, expectedValue = expectedValues[timesCalled]
, expectedAccumulatorKey = expectedAccumulatorKeys[timesCalled]
t.equal(value, expectedValue, 'value ' + value + ' does not match ' + expectedValue)
t.equal(key, expectedKey, 'key ' + key + ' does not match ' + expectedKey)
t.equal(list, item, 'list arg is not correct')
t.equal(acc.key, expectedAccumulatorKey, 'accumulator key ' + acc.key + ' does not match ' + expectedAccumulatorKey)
timesCalled += 1
acc.key += value
return acc
})
}
var result = reduce(item, iterator, {
key: ""
})
var result = reduce(item, iterator, accumulator)
t.ok(iterator.calledThrice, "iterator was not called thrice")
t.equal(timesCalled, 3, "iterator was not called thrice")
t.deepEqual(result, { key: 'a1b1c1' }, 'result is incorrect');
return t.end();
t.deepEqual(iterator.args[0], [{

@@ -36,9 +50,9 @@ key: "a1b1c1"

var item = createItem()
, iterator = sinon.spy()
, thisValue = {}
, iterator = function () {
t.equal(this, thisValue, 'this value is incorrect');
}
reduce(item, iterator, thisValue, {})
t.ok(iterator.calledOn(thisValue), "this value is incorrect")
t.end()

@@ -49,5 +63,5 @@ })

var list = [1, 2]
, iterator = sinon.spy(function (sum, v) {
, iterator = function (sum, v) {
return sum + v
})
}

@@ -61,3 +75,2 @@ var result = reduce(list, iterator)

function createItem() {

@@ -64,0 +77,0 @@ return {