JavaScript
K.Sun
这个作者很懒,什么都没留下…
展开
-
[JS] 计算数组中最大的N个元素
const maxN = (arr, n = 1) => [...arr].sort((a, b) => b - a).slice(0, n);测试:maxN([1, 2, 3]); // [3]maxN([1, 2, 3], 2); // [3,2]注意,如果直接是arr.sort()的话,arr本身就会被排序,所以用[...arr].sort,相当于做了一次复制。...原创 2019-12-24 13:06:59 · 3455 阅读 · 0 评论 -
[JS] Flatten array
拍平数组,这个在lodash里也是很常见的方法,那自己实现一个看看:const flatten = arr => [].concat(...arr.map(v => (Array.isArray(v) ? v : [v])));测试Flatten([1, [2], [[3], 4], 5]); // [1, 2, [3], 4, 5]逻辑很简单,如果元素是数组的话,那就直接...原创 2019-12-23 19:50:20 · 420 阅读 · 0 评论 -
[JS] 寻找Object中满足条件的最后一个key
const findLastKey = (obj, fn) => Object.keys(obj).reverse() .find(key => fn(obj[key], key, obj));测试:findLastKey( { barney: { age: 36, active: true }, fred: { age: 40, active: false ...原创 2019-12-23 19:30:29 · 2108 阅读 · 0 评论 -
[JS] 检查一个对象是否可迭代
检查一个对象是否可迭代,也就是说这个对象是否可用迭代器遍历,比如字符串,数组……怎么检查,很简单,只要看看对象下面Symbol.iterator是不是function就行了:const isIterable = obj => obj != null && typeof obj[Symbol.iterator] === 'function';测试:isArrayLik...原创 2019-12-23 19:11:54 · 7001 阅读 · 0 评论 -
[JS] 变量提升
猜猜下面的代码会输出什么东东?var foo = 1;var foobar = function() { console.log(foo); var foo = 2;};foobar();如果你知道局部变量这个概念的话,你可能会觉得这个输出是foo is not defined。如果你还知道JS里有变量提升这个概念的话,你可能觉得这个输出会是2。如果你还知道JS里的变量...原创 2019-12-23 19:05:09 · 161 阅读 · 0 评论 -
[JS] 格式化时间长度(formatDuration)
一般来讲我们拿到的时间长度是以毫秒(millisecond)为单位的,例如34325055574,那么问题来了,一眼看去不知道这到底是多长时间,只是隐隐感觉比较长,那么我们需要转换一下:const formatDuration = ms => { if (ms < 0) ms = -ms; const time = { day: Math.floor(ms / 864...原创 2019-12-23 18:33:18 · 3970 阅读 · 0 评论 -
JavaScript中Number类下几个常见的方法
toPrecision()很简单,toPrecision( )方法用于对数字格式化到指定精度。看例子:const num = 213.45689;console.log(num.toPrecision());console.log(num.toPrecision(4));console.log(num.toPrecision(12));console.log(num.toPrecis...原创 2019-03-25 15:31:41 · 3061 阅读 · 3 评论 -
JavaScript中Object的create和assign方法
Object.assign()这个方法是用于拷贝JSON对象的,复制对象的可枚举属性。Object.assign(target, ...sources)target是目标对象,source是原对象,返回目标对象。看例子:let returnedValue = Object.assign({ a: 1, b: 2 }, { c: 4, d: 5 });console.log(retur...原创 2019-03-01 22:02:43 · 582 阅读 · 0 评论 -
JavaScript中Object.getOwnPropertyNames()与Object.keys(obj)的区别
大部分情况下Object.getOwnPropertyNames()与Object.keys(obj)的功能是一样的,我们一般也是用来获取一个JSON对象中所有属性,例如const obj = { property1: 1, property2: 2,};console.log(Object.keys(obj));console.log(Object.getOwnProp...原创 2019-03-01 18:01:14 · 10948 阅读 · 4 评论 -
ES6的几个新特征
废话少说,还是直接上代码吧。1、参数默认值以前是这么写的:var link = function (height, color, url) { var height = height || 50 var color = color || 'red' var url = url || 'http://azat.co' ...}很显然以前的写法有点技巧...原创 2018-06-06 22:46:01 · 1007 阅读 · 0 评论 -
JavaScript中的'use strict'
有时候我们会再看在js文件的第一行有’use strict’这样的常量值,这是什么意思呢,看这字符长的样子像是“利用某种严格”模式,不错,你没猜错!‘use strict’是在JavaScript 1.8.5中才引入的,其实就是告诉你这个js文件要在严格模式下执行,那啥叫严格模式呢,答案就是如果不申明,你就不能用。以前的JavaScript是可以不用先申明的。举个栗子:"use strict";x原创 2017-11-30 15:21:21 · 904 阅读 · 0 评论 -
JavaScript代码加Alert后代码有效,不加则无效。
这个问题还真是头疼,刚开始觉得好奇怪,同样一段代码,为毛随便alert一下,下面的代码就起作用,去掉alert,啥效果也没有,真是奇了怪了!先看下代码:function setDedaultOption() { var select = document.getElementById("nodeId"); //假设我们想要第二个选项为默认选项 select.options[1原创 2016-11-10 14:02:54 · 2475 阅读 · 0 评论