1.精确判断对象的类型
Object.prototype.toString.call()方法判断数据类型;
例:
Object.prototype.toString.call([1,2]) // 输出"[object Array]"
Object.prototype.toString.call({1,2}) // 输出"[object Object]"
封装方法:
let isType = type => obj => {
return Object.prototype.toString.call( obj ) === '[object ' + type + ']';
}
isType('String')('123'); // true
isType('Array')([1, 2, 3]); // true
isType('Number')(123); // true
方法二
JavaScript constructor 属性
constructor属性返回此对象的Boolean函数的引用 ---W3school
例:
var ex = [];
console.log(ex.constructor == Array) // 输出 true
console.log(Array) // 输出 function Array() { [native code] }
let arr = [], obj = {};
typeof arr // 输出 'object'
arr.constructor == Array// 输出 true
typeof obj // 输出 'object'
obj.constructor == Object // 输出 true
es6新特性去重 Array.from(new Set(arr)) (https://es6.ruanyifeng.com/#docs/set-map)
例:
let arr = [1,2,2,3,3,4,5];
let set = new Set(arr);
Array.from(set)
console.log(set) //Set(5) {1, 2, 3, 4, 5}
// 去除数组的重复成员
[...new Set(array)]
// 去除字符串里面的重复字符。
[...new Set('ababbc')].join('')
// "abc"
一维数组去重方法二
var myArr = [1,3,4,5,6,3,7,4];
console.log(myArr.filter((value,index,arr)=>arr.indexOf(value)===index));
//[ 1, 3, 4, 5, 6, 7 ]
// 方法2:利用reduce方法遍历数组,reduce第一个参数是遍历需要执行的函数,第二个参数是item的初始值
var arr = [{
key: '01',
value: '乐乐'
}, {
key: '02',
value: '博博'
}, {
key: '03',
value: '淘淘'
},{
key: '04',
value: '哈哈'
},{
key: '01',
value: '乐乐'
}];
var obj = {};
arr = arr.reduce(function(item, next) {
obj[next.key] ? '' : obj[next.key] = true && item.push(next);
return item;
}, []);
console.log(arr);
3.数组内两元素互换位置
const swapItems = (arr, index1, index2) => {
//数组元素互换
/**
* @param {array} arr 操作的数组
* @param {string||number} index1 选中元素的index
* @param {string||number} index2 移动到的下一个位置
*/
arr[index1] = arr.splice(index2, 1, arr[index1])[0];
return arr;
};
4.判断元素是否存在数组中
方法1:
let arr = ['1', '2', '3'];
console.log(arr.includes('2')) // true
5.数组反转 reverse() 方法
let arr = [1, 2, 3]
console.log(arr.reverse()) // [3, 2, 1]
// join()数组拼接成字符串, split()字符串拆分成数组
var addTwoNumbers = function(l1, l2) {
let a = Number(l1.reverse().join("")); // 342
let b = Number(l2.reverse().join("")); // 465
let addData = a + b;
console.log(addData) // 807
return addData.toString().split("").reverse();
};
console.log(addTwoNumbers([2,4,3], [5,6,4])) // ['7', '0', '8']
6.splice实现数组的删除,插入,替换
1 | 一、splice 删除 |
7.Object.assign实现对象合并
1 | Objecr.assign方法用于对象的合并,将源对象的所有可枚举属性,复制到目标对象 |
8.sort()数组排序
1 | sort 函数,可以接收一个函数,返回值是比较两个数的相对顺序的值 |
- 本文链接:http://www.yijun.xyz/2021/04/29/javascriptLearn/
- 版权声明:本博客所有文章除特别声明外,均默认采用 许可协议。