SOURCE

// Test


/** 
 * String 字符串
 */
// slice 截取
'Apple,Banana,Kiwi'.slice(6, 12) // Banana 首含尾不含,返新
'Apple,Banana,Kiwi'.slice(-11, -5)// Banana 负值从尾算起
'Apple,Banana,Kiwi'.slice(13) // Kiwi
'Apple,Banana,Kiwi'.slice(-4) // Kiwi

// split 拆分
'hello'.split('e') // > ["h","llo"]
'hello'.split('l') // > ["he","","o"]
'hello'.split('') // > ["h","e","l","l","o"]

// str.length 长度
'Apple,Banana,Kiwi'.length // 17

// replace 替换
'cat'.replace('c', 'h') // hat 替换首次命中
'catcat'.replace(/c/ig, 'h') // hathat 正则:i大小写不敏感 g全部替换

// toLowerCase toUpperCase
'A'.toLowerCase() // a
'a'.toUpperCase() // A

// concat 拼接
'hello'.concat(' ', 'world') // hello world

// utf-16 code
'A'.charCodeAt(); // 65
String.fromCharCode(65); // A

/**
 * Array 数组
 */
let a = [1, 2, 3, 4, 5]
// push unshift
a.push(6,7) // 9 后插,返回数组长度
a.unshift(0) // 10  前插,返回数组长度

// pop shift
a.pop() // 7 后出,返回删除元素
a.shift() // 0 前出,返回删除元素

// join
a.join('') // '12345' 
a.join() // '1,2,3,4,5'

// reverse 反转
a.reverse() // [5,4,3,2,1] 改变原数组

// slice(start, end) 截取
a.slice(2, 4) // [3, 4] 返新
a.slice(2) // [3,4,5] 
a.slice(-2) // [4,5]

// splice(index, count, value1, value2....) 删除替换
a.splice(1, 2, ...['a', 'b' , 'c']) // 返回 [2, 3]  a:[1,"a","b","c",4,5] 
a.splice(2) // 返回[3,4,5] a:[1,2] 

// sort 排序
a.sort((a, b) => (b - a)) // [5,4,3,2,1]
a.sort() // 如果不传入排序函数,默认转为字符串,然后按照对应utf-16编码排序

// concat 连接数组
a.concat(['a','b'],[7,8]) // 返新 a.concat(['a','b'],[7,8])

// fill 数组
new Array(5).fill(1) // [1,1,1,1,1]

// === 遍历相关 ===
// map 映射:每一项运行规定函数,返回函数调用结果组成的新数组
let arr = [1, 2, 3, 4, 5]
let ret1 = arr.map(function (item, index, arr) {
  return item * item
})
//ret1  [1, 4, 9, 16, 25]

// reduce: 接收一个函数做累加器,数组每个值开始计算,最终计算为一个值 
// 语法:array.reduce(function(accumulator, currentValue, currentIndex, arr), initialValue)
arr = [1, 2, 3, 4, 5]
let ret2 = arr.reduce((accumulator, currentValue, index, arr) => {
  return accumulator + currentValue
}, 10)
//ret2 25

// forEach: 对数组中每一项执行给定函数
// arr.forEach((item, index, arr) => {// do someting })

// filter: 对数组中每一项执行给定函数,返回满足条件的元素组成的数组
// arr.filter((item, index, arr) => {return item > 0 })

// every: 对数组中每一项执行给定函数, 所有项都满足才返回true
// arr.every((item, index, arr) => {return item > 0 })

// some: 数组中只要有一项满足条件,就返回true
// arr.every((item, index, arr) => {return item > 0 })

/**
 * Object 对象
 */
let o = {a: 1, b: 2}
// 判断非继承属性
o.hasOwnProperty('a') // true
// 获取key数组,value数组
Object.keys(o) // ['a', 'b']
Object.values(o) // [1,2]
// 对象赋值
Object.assign(o, {c: 3}) // {"a":1,"b":2,"c":3}
// 遍历
for(let param in o){} // 遍历对象key,包含原型对象

/**
 * Map Set
 */
// Set
const s = new Set([1, 2, 3]); // 含1, 2, 3
s.add(4); // 1,2,3,4
s.delete(3); // 1,2,4
s.has(3); // false
s.size; // 3
// Set 和 Array互换
let s2 = new Set([1, 2, 3, 4]);
let a2 = [...s2]; // [1,2,3,4]


// Map 
const m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
m.get('Michael'); // 95
m.set('Adam', 67); // 添加新的key-value
m.has('Adam'); // 是否存在key 'Adam': true
m.delete('Adam'); // 删除key 'Adam'
m.keys();m.values();m.size; // 获取key value size
for(let [key, value] of m){} // 支持 for of遍历;有序;
console 命令行工具 X clear

                    
>
console