提示:在继续阅读之前,请注意此文章最后更新于 1327 天前,其中的部分内容可能已经无效或过时。
ToPrimitive
首先贴一个ToPrimitive
的概念,这是一个拆箱相关的概念。
首先贴一个ToPrimitive
的概念,这是一个拆箱相关的概念。
原因是两个文件的函数都出在全局范围内。在开头加export {}
,或者导出这个函数解决
参考:Duplicate function implementation
q使用webpack chain来设置webpack,使用方法如下:
例子1摘自MDN的Array.from()
文档:
function combine() {
let arr = [].concat.apply([], arguments); // 没有去重复的新数组
return Array.from(new Set(arr));
}
let m = [1, 2, 2, 'a', 'b'], n = [2, 3, 3, 'a'];
console.log(combine(m, n)); // [ 1, 2, 'a', 'b', 3 ]
关键点在于使用apply可以在不创建新数组的情况下将arguments合入[]和使用Set
去重。Set对象允许你存储任何类型的唯一值。然后用Array.from()将其转化为数组元素。
参见:Function.prototype.apply()
Set
function getItems(goal) {
let arrItems = Array.from(goal).sort(compare('weight'));
return arrItems;
}
function compare(property) {
return function (a, b) {
return a[property] - b[property];
}
}
getItems([{ a: 4, weight: 4 }, { b: 2, weight: 2 }, { c: 3, weight: 3 }]);
// result:[{ b: 2, weight: 2 }, { c: 3, weight: 3 }, { a: 4, weight: 4 }]
第一种是从从commander.js偷来的
function camelcase(flag) {
return flag.split('-').reduce((str, word) => {
return str + word[0].toUpperCase() + word.slice(1);
});
}
其实这个准确的来说应该是Pascal(大驼峰法)
但是commander.js的对象program使用的都是小驼峰法(以下简称驼峰法),这么看来是我还没偷对。
而在lodash中的camelCase则是这么写的:
const camelCase = (string) => (
words(toString(string).replace(/['\u2019]/g, '')).reduce((result, word, index) => {
word = word.toLowerCase()
return result + (index ? upperFirst(word) : word)
}, '')
)
这边用到了一个叫words的函数,比较复杂,下次在写吧