js一些技巧总结

判断数据类型的方法;

1:typeof


image.png

2:instanceof


image.png

instanceof运算符用于测试构造函数的prototype属性是否出现在对象的原型链中的任何位置; 由上结果,字面量产出的原始数据类型无法使用instanceof判断。
3:最实用的方法是Object,prototype.call('你需要判断的值');
image.png

上述方法最为便捷有效;
4:另外方法 constructor

var a = {}
a.constructor === Object     // true

var b = '111';
b.constructor === String    // true

var strN = new String('11111');
strN.constructor === String // true

var c = true;
c.constructor === Boolean   // true

var d = Symbol('symbol')
d.constructor === Symbol    // true

5:prototype
比较对象的原型与构造函数的原型是否相等

var a = {}
a.__proto__ === Object.prototype     // true

var t = new Date();
t.__proto__ === Date.prototype      // true


var str = 'sting';
str.__proto__ === String.prototype  // true

var strN = new String('11111');
strN.__proto__ === String.prototype // true


6:这个还真有用;数值的千分位格式化;

第一个方法
var num = 123455678;
var num1 = 123455678.12345;

var formatNum = num.toLocaleString('en-US');
var formatNum1 = num1.toLocaleString('en-US');

console.log(formatNum); // 123,455,678
console.log(formatNum1); // 123,455,678.123

第二个方法;
var num = 123455678;
var num1 = 123455678.12345;

var formatNum = String(num).replace(/\B(?=(\d{3})+(?!\d))/g, ',');
var formatNum1 = String(num1).replace(/\B(?=(\d{3})+(?!\d))/g, ',');

console.log(formatNum); // 123,455,678
console.log(formatNum1); // 123,455,678.12,345


7:对对象的循环

for  in

image.png

for-in 会遍历对象属性,包括原型链中的属性;
Object.keys();
Object.values();keys, values 返回一个给定对象自身可枚举属性数组,自身可枚举属性值的数组

image.png

8:数组的去重

方法一
var arr = [1,2,1,1,22,4,5,6];
arr1 = [...new Set(arr)];//[1, 2, 22, 4, 5, 6]

方法二:
var arr = [1, 2, 3, 2, 6, '2', 3, 1];
function uniqueArr (arr) {
    return arr.filter(function (ele, index, array) {
        // 利用数组indexOf()方法,返回找到的第一个值的索引
        // 如果数组元素的索引值与indexOf方法查找返回的值不相等,则说明该值重复了,直接过滤掉
        return array.indexOf(ele) === index;
    })
}

9:多维数组一行代码实现一维转换

var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];
其实直接toString就生成了一组序列;
var resultArr = arr.toString().split(',');

console.log(resultArr); // [1, 2, 2, 3, 4, 5, 5, 6, 7, 8, 9, 11, 12, 12, 13, 14, 10]


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容