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
すべて元の配列を操作せず、新しい値のみを返します.
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 }