数组的concat方法,自动扁平数组
数组的slice方法, slice要前不要后
['a', 'b', 'c', 'd', 'e'].slice(0, 3)
// ['a', 'b', 'c']
['a', 'b', 'c', 'd', 'e'].slice(1, 3)
// ['b', 'c']
js 字符串
'abcdefg'.slice(-1) // g
'abcdefg'.slice(1) // “bcdefg"
'abcdefg'.slice(1,4) // “bcd"
—————————————
'abcdefg'.substring(1,4) // “bcd"
———————
slice可以完全取代 substring ,slice可以是负数
—————
substr
'abcdefg'.substr(-1) // g
'abcdefg'.substr(1,5) // “bcdef”
'abcdefg'.substr(1) // "bcdefg"
slice方法保留前,不保留后
哪些数组方法改变自己
push、pop、shift、unshift、reverse、sort、splice
数组上也是可以挂其他属性的,不过不在计算在length中
data.sort(function(a, b) { return b.total - a.total; });
这个数组的sort函数改变之后,不需要重新赋值,在原有的指针上修改的。
Object 方法
对象
一种对象深拷贝的方法: var obj = {name:’yan’}; var tem = Object.create(obj) tem的改变不会改变obj,但是obj改变会改变tem.
assign方法
这个方法也可以merge也可以拷贝,但是是浅拷贝 还注意。(可以考虑下loadsh.js assign方法但是merge方法和assign方法还是有区别的哈https://blog.csdn.net/u011153667/article/details/52275797)
Object.defineProperty Object.defineProperties
Object.freeze
Objec.keys values entries
Object.getOwnPropertyDescriptor
ES5中还提供了一个读取特性值的方法,该方法接收对象及其属性名作为两个参数,返回一个对象,根据属性类型的不同,返回对象会包含不同的值。
Object.getOwnPropertyNames用过获取所有对象,包括可枚举和不可枚举的。
Object.getPrototypeOf
这个方法好像父类的父类也是true
Objecr.prototype. 不需要说的,toString valueOf,toLocaleString
Objecr.prototype.hasOwnproperty
Object.prototype.isPrototypeOf
Object.prototype.propertyIsEnumerable
字符串转数组的方法
split() 方法
展开运算符 var [a] = ‘sdfg’
解构赋值 […‘asdf’]
Array.from
Array.from(‘assadfasf’)
数组转字符串的方法
toString()
join()
split 正则切割字符串
“Hello World,I-am code”.split(/[,-\s.]/) // [“Hello”, “World”, “I”, “am”, “code”]
js数组和数组去重的几种简单的方法
---方法1
Array.from(new Set([3,2,20,45,12,20]))
---方法2
[...new Set([3,2,20,45,12,20])]
---方法3
filter()和indexOf()实现去重
---方法4
reduce()和includes()实现去重
----方法5
双重for循环 + splice() 或 双重for循环 + push() (ES5的方法)
JS 中 replace 和 replaceAll 的区别?
三种JS截取字符串方法
slice,substring 没有负数的表现是一样的。