js常见判断


这里是我的笔记,记录一些JavaScript常见判断的常用方法,这个笔记后面慢慢增加了许多内容,如果有错误之处,请各位多多指教。

目录

Js 12种数据类型汇总

  • 基本类型:String、Number、Boolean、Symbol、Undefined、Null、BigInt(7种)
  • 引用类型:Object、Array、RegExp、Date、Function (5种)

区别:引用类型值可添加属性和方法,而基本类型值则不可以。

基本类型

1.基本类型的变量是存放在栈内存(Stack)里的

2.基本数据类型的值是按值访问的

3.基本类型的值是不可变的

4.基本类型的比较是它们的值的比较

引用类型

1.引用类型的数据是存放在堆内存中的

2.引用类型的值是按引用访问的

3.引用类型的值是可变的

4.引用类型的比较是引用的比较

JavaScript判断是否为数字

使用isNaN()函数:

isNaN()函数是js自带的全局函数,isNaN() 函数用于检查其参数是否是非数字值。

实例参考:

document.write(isNaN(123));//数字 输出:false
document.write(isNaN("Hello"));//字符串输出:true

缺点:

isNaN()会将 null、空格以及空串按照0来处理,所以检查不严谨。
所以用加工一下,和typeof运算符一起使用。

实例参考:

function myIsNaN(value) {
console.log((typeof value === 'number' && !isNaN(value)) + "<br>");
}

结果显示:

myIsNaN(10);//true
myIsNaN(null); //false
myIsNaN(); //false
myIsNaN(); //false

JavaScript判断字符串是否为空

实例参考:

function isEmpty(obj) {
if (typeof obj == "undefined" || obj == null || obj == "") {
return true;
} else {
return false;
}
}

结果显示:

console.log(isEmpty("10"));//false

JavaScript判断数组是否为空

实例参考:

let arr = [];
if (arr.length == 0) {
console.log("数组为空")
} else {
console.log("数组不为空")
}

js判断数组是否含有某个值

实例参考:

(1). 使用indexOf()方法

let arr = [1, 2, 3, 4];

if (arr.indexOf(2) != - 1) {
console.log("数组含有2")
} else {
console.log("数组不含2")
}

(2).使用includes()方法
数组中含有某值返回true,没有返回false。ES7新方法。

let arr = [1, 2, 3, 4];
if (arr.includes(2)) {
console.log("数组中有2");
} else {
console.log("数组中无2");
}

(3).使用find()方法
数组中含有某值返回true,没有返回false。ES7新方法。

let arr = [1, 2, 3, 4];
arr.find(value => {
if (value === 2) {
console.log("数组含有2")
}
})

js判断一个对象是否为空

实例参考:

(1). 使用Object.keys(obj)方法
返回一个给定对象自身可枚举属性组成的数组。

let obj1 = {}
if (Object.keys(obj1).length == 0) {
console.log("空对象")
} else {
console.log("非空对象")
}

(2).使用JSON.stringify() 方法
从一个对象中解析出字符串

用法

JSON.stringify({ "a": "1", "b": "2" })
结果是:"{"a":"1","b":"2"}"

实例

let obj1 = {}
if (JSON.stringify(obj1) == "{}") {
console.log("空对象")
} else {
console.log("非空对象")
}

js判断两个数组是否相等

实例1

console.log(JSON.stringify([1, 2, 3].sort()) === JSON.stringify([3, 2, 1].sort())); //true

实例2

console.log([1, 2, 3].sort().toString() === [3, 2, 1].sort().toString()); //true

注意,经验证,上述方法对复杂数组结构不适用。

JS中如何对象转数组方法

(1).使用Array.from()方法

Array.from() 方法,用于数组的浅拷贝。就是将一个类数组对象或者可遍历对象转换成一个真正的数组。

用法

JSON.stringify({ "a": "1", "b": "2" })
结果是:"{"a":"1","b":"2"}"

实例

let obj = {
0: 'nihao',
1: 'haha',
2: 'gansha',
'length': 3
}
let arr = Array.from(obj)

结果显示:

console.log(arr);//['nihao', 'haha', 'gansha']

(2).使用Object.keys(object)

实例

let obj = {
0: 'nihao',
1: 'haha',
2: 'gansha',
'length': 3
}
let arr = Array.from(obj)

结果显示:

console.log(arr);[0, 1, 2]

js判断是否是数组

通过Array.isArray()判断

let a = [1, 2, 3]
Array.isArray(a);//true

js判断数组是否存在重复元素

let arr = [1, 2, 4, 3, 4, 5];

console.log(new Set(arr));//Set { 1, 2, 4, 3, 5 }

console.log(new Set(arr).size);//5

console.log(arr.length);//6

if (new Set(arr).size !== arr.length) {
console.log("存在相同的元素");
}

注意,经验证,上述方法对复杂数组结构不适用。

补充js里size和length的区别

length

  • length是js的原生方法,用于获取元素的个数和对象的长度
  • var length = $(obj).length;

size

  • size()属于方法,只能作用于对象上,获取元素的个数
  • var size = $(obj).size();
  • 注:如果想要获取字符串的长度只能用length属性,如
  • var length = $(obj).html().length;

JS如何去除数组重复值

运用ES6的Set数据结构

let arr = [1, 2, 4, 3, 6, 3, 4];
let set = new Set(arr);
let newArr = Array.from(set); // Array.from方法可以将 Set 结构转为数组。
console.log(newArr); // [ 1, 2, 4, 3, 6 ]

简化后:

let arr = [1, 2, 4, 3, 6, 3, 4];
l
console.log(...new Set(arr);); // [ 1, 2, 4, 3, 6 ]

JS如何获取数组重复的元素

function refrain(arr) {
var tmp = [];
if (Array.isArray(arr)) {
arr.concat().sort().sort(function (a, b) {
if (a == b && tmp.indexOf(a) === - 1) tmp.push(a);
});
}
return tmp;
}
var arr1 = [12, 1, 3, 2, 3, 3];
var arr2 = ["1", "3", "1"];

结果显示:

console.log(refrain(arr1));// [ 3 ]
console.log(refrain(arr2));// [ '1' ]

js常见过滤json数组某个字段

let arrObj = [
   {name: '小明', id: 800},
   {name: '小红', id: 801},
   {name: '小刚', id: 802}
]

let aArr = arrObj.filter(item => item.name === '小刚') 
//[ { name: '小刚', id: 802 } ]

随机生成颜色

const randomColor=()=>{
 let rgb=[]
 for(let i=0 ;i<3;++i){
let color=Math.floor(Math.random()*256).toString(16)
color=(color.length===1)?`0${color}`:color
rgb.push(color)
 }
 return `#${rgb.join("")}`
}


文章作者: BiLiang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 BiLiang !
评论
  目录