常用的判断数组,空对象

//    var a = "";
//    var a = " ";
//    var a = null;
//    var a = undefined;
//    var a = [];
//    var a = {};
//    var a = NaN;
    
    if(a === undefined) { // 只能用 === 运算来测试某个值是否是未定义的
        console.log("为undefined");
    }
    
    if(a == null) { // 等同于 a === undefined || a === null
        console.log("为null");
    }


    
    // String    
    if(a == "" || a == null || a == undefined){ // "",null,undefined
        console.log("为空");
    }
    if(!a){ // "",null,undefined,NaN
        console.log("为空"); 
    }
    if(!$.trim(a)){ // "",null,undefined
        console.log("为空");
    }


    // Array
    if(a.length == 0){ // "",[]
        console.log("为空");
    }
    if(!a.length){ // "",[]
        console.log("为空");
    }


    // Object {}
    if($.isEmptyObject(a)){ // 普通对象使用 for...in 判断,有 key 即为 false
        console.log("为空");
    }
### 如何在 JavaScript 中区分数组和普通对象 在 JavaScript 中,可以通过多种方法来区分数组和普通对象。以下是几种常用的方法和技术: #### 使用 `Array.isArray()` `Array.isArray()` 是一种标准方法,用于判断给定的对象是否是一个数组。如果传入的是数组,则返回 `true`;否则返回 `false`。 ```javascript console.log(Array.isArray([])); // true [^3] console.log(Array.isArray({})); // false [^3] ``` #### 使用 `instanceof` `instanceof` 运算符可以用来检测某个对象是否是由特定构造函数创建的实例。对于数组来说,它可以有效地识别出该对象是否为 `Array` 的实例。 ```javascript const arr = []; const obj = {}; console.log(arr instanceof Array); // true [^4] console.log(obj instanceof Array); // false [^4] ``` 需要注意的是,在某些情况下(例如跨 iframe),由于不同的全局环境可能导致 `instanceof` 失效,因此推荐优先使用 `Array.isArray()` 方法。 #### 使用 `Object.prototype.toString.call()` 通过调用 `Object.prototype.toString.call()` 可以获取到更底层的信息。它会返回一个表示对象类型的字符串,其中 `[object Array]` 表示这是一个数组,而 `[object Object]` 则表示这是普通的对象。 ```javascript console.log(Object.prototype.toString.call([])); // "[object Array]" [^5] console.log(Object.prototype.toString.call({})); // "[object Object]" [^5] ``` 这种方法的优点在于其兼容性和可靠性较高,即使是在不同上下文中也能正常工作。 #### 自定义属性或方法 虽然不常见,但在开发过程中也可以通过自定义属性或者方法来标记数据结构。比如可以在数组上附加特殊的标志位以便后续处理时加以区别。 ```javascript function createMarkedArray(data) { const result = [...data]; result._isCustomArray = true; return result; } const customArr = createMarkedArray([1, 2, 3]); console.log(customArr._isCustomArray); // true [^6] ``` 尽管这种方式灵活多变,但通常并不建议这样做,因为它可能与其他库发生冲突并破坏原有设计模式。 ### 结论 综上所述,最安全可靠的方式还是采用内置工具如 `Array.isArray()` 或者基于原型链的操作来进行判定。这些方式不仅简单明了而且具有广泛的浏览器支持度以及良好的性能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值