数组、对象基本操作 ------------- 判空、去空值、是否包含某值、获取属性值、删除属性等

数组:

1.判空:

(1).arr.length

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

(2).将json对象转化为json字符串,再判断该字符串是否为"[]"

		let obj = [];
		
		console.log(JSON.stringify(obj) === '[]')     //true

(3).通过data == false 来判断数组为空

在数组直接与布尔类型比较的时候,默认都是将数组和布尔类型都转化为Number类型比较,空数组转化为Number类型的时候为0

		let data = [];
		if(data == false){
		   //data为空数组时,要执行的代码
		
		   console.log('数组为空');
		}

2.去除数组中的空值:

(1).将不为空的值放入新数组

	let arr  = ["张三""""""李四""""王麻子"]let arrNew =[]
	      for(let i =0;i<=arr.length-1;i++){
	        if(arr[i].trim() != "" ){
	          arrNew .push(arr[i])
	        }
	      }
	      arr = arrNew ;

(2).filter方法

		var array = [1,2,'',4,'',6];
		var arr= array.filter(function (el) {
        return el !== '';
         });
        console.log(arr) //[1,2,4,6]

(3).filter+trim方法

	var arr = ['2','3','',null,undefined,'7',' ','9'];
	var r = arr.filter(function (s) {
	    return s && s.trim(); 
	    // 注:IE9(不包含IE9)以下的版本没有trim()方法
	});
	console.log(r);

(4).splice方法

function trimSpace(array){  
     for(var i = 0 ;i<array.length;i++)  
     {  
         if(array[i] == " " || array[i] == null || typeof(array[i]) == "undefined")  
         {  
                  array.splice(i,1);  
                  i= i-1;  

         }  
     }  
     return array;  
}  

2.数组中包含某元素:

方法一:arr.indexOf(某元素):未找到则返回 -1。
		var fruits = ["Banana", "Orange", "Apple", "Mango"];
		
		var a = fruits.indexOf("Apple"); // 2

//以上输出结果意味着 "Apple" 元素位于数组中下标为 2 的位置。

indexOf()完整语法:

array.indexOf(item,start)
item:必须。查找的元素。
start:可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 stringObject.length - 1。如省略该参数,则将从字符串的首字符开始检索。

		var fruits=["Banana","Orange","Apple","Mango","Banana","Orange","Apple"];
		var a = fruits.indexOf("Apple",4); 
		// 6

注:
1.string.indexOf()返回某个指定的字符串值在字符串中首次出现的位置。
2. 查找字符串最后出现的位置,使用 lastIndexOf() 方法。

方法二:arr.find()

数组实例的find()用于找出第一个符合条件的数组元素。
它的参数是一个回调函数,所有数组元素依次遍历该回调函数,直到找出第一个返回值为true的元素,然后返回该元素,否则返回undefined。

find() 方法为数组中的每个元素都调用一次函数执行:当数组中的元素在测试条件时返回 true 时, find() 返回符合条件的元素,之后的值不会再调用执行函数。 如果没有符合条件的元素返回 undefined

注意:

find() 对于空数组,函数是不会执行的。
find() 并没有改变数组的原始值。

实际用法:

		let arr=[1,5,10,15]
		arr.find(function(value) {
		if(value === 要查找的值) {
		   //则包含该元素
		}
		})
方法三:array.findIndex()

1.array.findIndex()和array.find()十分类似,返回第一个符合条件的数组元素的位置,如果所有元素都不符合条件,则返回-1。
2. findIndex() 方法为数组中的每个元素都调用一次函数执行:
3. 当数组中的元素在测试条件时返回 true 时, findIndex() 返回符合条件的元素的索引位置,之后的值不会再调用执行函数。
4.如果没有符合条件的元素返回 -1

注意:

findIndex() 对于空数组,函数是不会执行的。
findIndex() 并没有改变数组的原始值

let arr=[1,5,10,15]
arr.findIndex(function(value, index, arr) {
return value > 9;
}) // 2.  

方法二和方法三,这两个方法都可以发现NaN,弥补了方法一IndexOf()的不足。

方法四:for() 遍历数组,然后 if 判断
		var arr = [1, 5, 10, 15];
		
		//传统for
		
		    for(let i=0; i<arr.length; i++) {
		
		    if(arr[i] === 查找值) {
		
		        //则包含该元素
		    }
		}
		// for...of
		
		  for(v of arr) {
		
		    if(v === 查找值) {
		
		        //则包含该元素
		    }
		}
		//forEach
		
		arr.forEach(v=>{
		
		   if(v === 查找值) {
		
		        //则包含该元素
		}
		})
方法五:就是使用jquery的inArray方法,

该方法返回元素在数组中的下标,如果不存在与数组中,那么返回-1

	/**使用jquery的inArray方法判断元素是否存在于数组中@param {Object} arr 数组@param {Object} value 元素值*/
	function isInArray2(arr,value){
	var index = $.inArray(value,arr);
	if(index >= 0){
	return true;
	}
	return false;
	}

对象:

1.判空:

(1).将json对象转化为json字符串,再判断该字符串是否为"{}"

		var data = {};
		
		var b = (JSON.stringify(data) == "{}");
		
		alert(b);//true

(2).for in 循环判断

		var obj = {};
		
		var b = function() {
		for(var key in obj) {
		return false;
		}
		return true;
		
		}
		
		alert(b());//true

(3).使用ES6的Object.keys()方法 返回值是对象中属性名组成的数组

		var data = {};
		
		var arr = Object.keys(data);
		
		alert(arr.length == 0);//true

(4)Object.getOwnPropertyNames()方法

		var data = {};
		var arr = Object.getOwnPropertyNames(data);
		alert(arr.length == 0);//true

2.获取所有属性名:

(1).利用Object.keys方法获取对象的所有属性,格式为object.keys(对象名称);返回一个对象属性名的数组

		var keys = Object.keys(obj);
		console.log(keys);

(2).对象属性的遍历:for in; for (var 变量 in 数组名称){ }

		for (var pro in obj){
		    console.log(pro);
		}

(3).Object.entries()方法
返回一个给定对象自身可枚举属性的键值对数组,其排列与使用 for…in
循环遍历该对象时返回的顺序一致(区别在于 for-in 循环还会枚举原型链中的属性)

		const object1 = {
		  a: 'somestring',
		  b: 42
		};
		
		for (const [key, value] of Object.entries(object1)) {
		  console.log(key);
		  console.log(value);
		}

3.删除某个属性名:

		var obj= {
		  height: 180,
		  width: 180,
		}
		delete obj.width

4.去除对象中的空键值对:

		var data={
			a:1,
			b:2,
			c:3,
			4:''
		}
		for ( var key in data ){
			if ( data[key] === '' ){
				delete data[key]
			}
		}
		console.log(data);
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值