数组:
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);