immutable lodash/fp ramda対応の削除filter変更map増加...
3182 ワード
この3つのライブラリの配列に対する操作と元のJSの配列に対する操作をテストします.特にfilterを削除してmapを変更します.この金文を比較してみよう.
一、immutable
immutable - npm https://www.npmjs.com/package/immutable Set — Immutable.js https://immutable-js.github.io/immutable-js/docs/#/Set
すべて元の配列を操作せず、新しい値のみを返します.
二、lodash/fp
三、ramda
一、immutable
immutable - npm https://www.npmjs.com/package/immutable Set — Immutable.js https://immutable-js.github.io/immutable-js/docs/#/Set
すべて元の配列を操作せず、新しい値のみを返します.
var immutable = require('immutable');
var arr1 = ['A', 'B', 'C', 'D'];
// ES6 ...
var arr2 = immutable.fromJS(arr1).push('E').toJS();
// ES6 filter
var arr3 = immutable.fromJS(arr1).splice(2, 1).toJS();
// ES6 map
var arr3 = immutable.fromJS(arr1).set(2, "M").toJS();
console.log(arr1);
console.log(arr2);
console.log(arr3);
//
// [ 'A', 'B', 'C', 'D' ]
// [ 'A', 'B', 'C', 'D', 'E']
// [ 'A', 'B', 'M', 'D' ]
二、lodash/fp
var _ = require('lodash/fp');
//
// ES6 map
var arr1 = ["A","B","C","D","E"];
// , "M"
var arr2 = _.set(0, "M", arr1);
console.log(arr1);
console.log(arr2);
//
// [ 'A', 'B', 'C', 'D', 'E' ]
// [ 'M', 'B', 'C', 'D', 'E' ]
// ES6 ...
var arr3 = _.set(arr1.length, " ", arr1);
console.log(arr3);
// [ 'A', 'B', 'C', 'D', 'E', ' ' ]
// filter
var arr = [
{'id': 1, 'name': ' ', 'age': 18},
{'id': 2, 'name': ' ', 'age': 19},
{'id': 3, 'name': ' ', 'age': 20}
];
var arr4 = _.filter(item => item.id!==1,arr)
console.log(arr)
console.log(arr4)
//
// [ { id: 1, name: ' ', age: 18 },
// { id: 2, name: ' ', age: 19 },
// { id: 3, name: ' ', age: 20 } ]
// [ { id: 2, name: ' ', age: 19 },
// { id: 3, name: ' ', age: 20 } ]
// k
var obj1 = {'a': 8, 'b': 3, 'c': 4};
var obj2 = _.set('b', 113, obj1);
console.log(obj1);
console.log(obj2);
//
// { a: 8, b: 3, c: 4 }
// { a: 8, b: 113, c: 4 }
三、ramda
var R = require('ramda');
var arr1 = ['A', 'B', 'C', 'D'];
// ES6 ...
var arr2 = R.insert(arr1.length, 'E', arr1);
// ES6 filter
var arr3 = R.filter(item => item !== 'C', arr1);
// ES6 filter
var arr4 = R.remove(0, 1, arr1);
// ES6 map
var arr5 = R.update(1, "M", arr1);
console.log(arr1);
console.log(arr2);
console.log(arr3);
console.log(arr4);
console.log(arr5);
//
// [ 'A', 'B', 'C', 'D' ]
// [ 'A', 'B', 'C', 'D', 'E' ]
// [ 'A', 'B', 'D' ]
// [ 'B', 'C', 'D' ]
// [ 'A', 'M', 'C', 'D' ]
var obj1 = {'a': 1, 'b': 2, 'c': 3};
var obj2 = R.set(R.lensProp('b') ,8 , obj1);
console.log(obj1);
console.log(obj2);
//
// { a: 1, b: 2, c: 3 }
// { a: 1, b: 8, c: 3 }