Ramda 自行組合 objSize()
栏目: JavaScript · 发布时间: 6年前
内容简介:對於 Array,ECMAScript 提供了VS Code 1.33.0Quokka 1.0.205
對於 Array,ECMAScript 提供了 length() 讓我們獲得 Array 的大小;但對於 Object 的 Size,ECMAScript 並沒有提供直接的方法,必須使用較 Tricky 方式。
Version
VS Code 1.33.0
Quokka 1.0.205
Ramda 0.26.1
ECMAScript
let data = {
firstName: 'Sam',
lastName: 'Xiao'
};
let objSize = obj => Object.keys(obj).length
console.log(objSize(data));
所謂 object 的 size,其實就是指 property 個數,ECMAScript 並沒有提供直接的方式取得,但 array 有 length 。
所以先使用 Object.keys() 將 key 部分變成 array,就可以使用 array.length 求得。
let data = {
firstName: 'Sam',
lastName: 'Xiao'
};
let objSize = obj => Object.values(obj).length
console.log(objSize(data));
既然能用 Object.keys() ,當然也能用 Object.values() 。
let data = {
firstName: 'Sam',
lastName: 'Xiao'
};
let objSize = obj => Object.entries(obj).length
console.log(objSize(data));
既然 Object.keys() 與 Object.values() 都能用,當然也能使用 ES2017 的 Object.entries() 。
Ramda
import { keys, length, pipe } from 'ramda';
let obj = {
firstName: 'Sam',
lastName: 'Xiao'
};
let objSize = pipe(keys, length);
console.log(objSize(obj));
Object.keys() 雖然提供了 FP 方式取得 array,但可惜 Array.length 為 property,因此 Object.keys() 與 Array.length 無法使用 Function Compostion。
Ramda 提供了 keys() ,為 Object.keys() 的 FP 版本,除此之外,亦提供了 length() ,為 Array.length 的 function 版本,這解決了原本 Array.length 無法組合的問題。
Conclusion
- Ramda 亦提供
values(),相當於Object.values(),因此也能組合values()與length() -
Array.length為 property,因此無法 Function Composition - OOP 與 FP 雖然功能相同,但因為提供方式不同,使用方式與觀念就相差很大
Reference
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Data Mining
Jiawei Han、Micheline Kamber、Jian Pei / Morgan Kaufmann / 2011-7-6 / USD 74.95
The increasing volume of data in modern business and science calls for more complex and sophisticated tools. Although advances in data mining technology have made extensive data collection much easier......一起来看看 《Data Mining》 这本书的介绍吧!