`

javascript 判断 类数组

阅读更多

/**
 * 判断一个对象是否是类数组
 * @param o
 */
function isArrayLike(o) {

    //如果是Array构造的一个实例,那肯定就是了
    if (o instanceof Array)return true;

    //如果连length属性都没有,那肯定不是了,举例:arguments参数有length属性
    if (!"length" in o)return false;

    //如果,是用户自定义的length,那么需要判断他的类型
    if (typeof o.length != "number")return false;

    if (o.length < 0)return false;

    if (o.length > 0) {
        if (!(o.length - 1) in o)return false;  //这行不是很理解,有知道的吗?
    }


    /**
     * 最后需要把方法排除在外
     * 此行注释去掉,则isArrayLike(MyFunc)=false
     */
    //    if (typeof(o) == "function")return false;

    return true;
}


function MyFunc(x, y, a, b, c) {
    this.x = x;
    this.y = y;
    return this;
}

var f = new MyFunc(3, 5);
document.writeln(MyFunc.length);//5

//分明是一个function,为什么成了Array Like?
document.writeln(isArrayLike(MyFunc));//true
document.writeln(isArrayLike(f));//false
document.writeln("<br/>");


var MyMap = {
    x:"sjkfdks",
    y:"3223",
    z:88,
    length:Math.random() //长度不是整数也可以?呵呵
}
document.writeln(MyMap.length);//6
document.writeln(isArrayLike(MyMap));//true
document.writeln("<br/>");

var ret = [];
ret['x'] = 32;
ret['y'] = 33;
ret['z'] = 35;
document.writeln(ret.length);
document.writeln(isArrayLike(ret));
document.writeln("<br/>");

ret = [];
ret.x = 32;
ret.y = 33;
ret.z = 35;
document.writeln(ret.length);
document.writeln(isArrayLike(ret));
document.writeln("<br/>");

function test(a, b, c) {
    document.writeln(isArrayLike(arguments));
}
test(2, 3, 4, 5);

分享到:
评论

相关推荐

    jQery中类数组判断的实现原理及代码实现

    掌握类数组对象的概念和判断方式,对于理解和使用JavaScript的高级特性,如`Array.prototype.slice.call()`或`Array.from()`等方法,都至关重要。 了解这些知识后,我们可以通过自定义函数或利用jQuery提供的工具...

    js判断数组是否相等的方法

    在JavaScript中,判断两个数组是否相等是一个常见的需求,尤其在处理数据比较或者验证时。根据标题和描述,我们可以区分两种不同的场景: 1. **数组完全相等**:在这种情况下,不仅要求数组中的元素相同,而且元素...

    javascript如何判断数组内元素是否重复的方法集锦

    ### JavaScript 判断数组内元素是否重复的方法集锦 在日常的前端开发工作中,经常会遇到需要判断数组中的元素是否存在重复的情况。对于这样的需求,JavaScript 提供了多种方法来实现这一功能。下面将详细介绍几种...

    JavaScript对象与数组参考大全JavaScript语法结构

    在本篇内容中,我们将深入探讨JavaScript对象和数组的详细知识。 一、JavaScript对象 1. 对象定义:JavaScript对象是一种键值对的集合,键通常是字符串,而值可以是任何类型的数据。对象用花括号 `{}` 包裹,键值对...

    javascript读取json数组生成滚动分页

    在本场景中,我们将关注如何使用JavaScript从JSON数组中读取数据并生成滚动分页效果。滚动分页是一种用户滚动到页面底部时自动加载更多数据的技术,常见于社交网络和新闻网站。 首先,我们需要理解JSON(JavaScript...

    js数组相减简单示例【删除a数组所有与b数组相同元素】

    此外,JavaScript中的`splice`方法提供了从数组中添加或删除元素的能力,是实现这类功能不可或缺的工具。 最后,为了验证我们编写的函数是否正确,文章提供了在线HTML/CSS/JavaScript代码运行工具的链接,供读者...

    javascript判断数组内是否重复的方法

    在处理数组时,有时我们需要判断数组中的元素是否存在重复。本篇文章将详细讲解如何利用JavaScript实现这个功能。 首先,我们可以通过遍历数组来检查是否有重复的元素。一个简单的方法是使用双重循环,将数组中的每...

    Javascript数组操作整理.rar

    判断数组中是否存在指定元素,存在则返回true,不存在则返回false。 以上是JavaScript数组操作的基础知识,熟练掌握这些操作,能有效提升你在处理数组时的效率和代码质量。在实际开发中,还需要结合具体业务场景...

    js判断两个数组是否完全相同

    在JavaScript(JS)中,判断两个数组是否完全相同是一个常见的需求,这可能涉及到对对象数组或字符串数组的比较。在编程实践中,数组的相同性不仅仅是元素数量的匹配,还需要考虑元素的顺序和值的精确匹配。下面我们...

    javascript判断一个变量是数组还是对象

    我们能够使用typeof判断变量的身份,判断字符串得到string,数字和NaN得到number,函数会得到function等,但是判断数组,对象和null时都会得到object,详细请看js数据类型,这就是typeof的局限性,并不能准确的判断...

    JavaScript中数组常见操作技巧

    此外,判断数组是否为空,可以使用 `if (arr.length) {}`。 #### 数组排序 排序数组可以使用数组的 `sort()` 方法,它可以根据提供的比较函数来排序数组。 ```javascript // 数组排序示例 const numbers = [1, 2, ...

    JavaScript判断数组重复内容的两种方法(推荐)

    在处理JavaScript数组时,经常需要判断数组中是否存在重复的内容。本文将介绍两种方法来检测数组中的重复项,并返回布尔值来表示是否发现了重复内容。 ### 方法一:使用indexOf()和lastIndexOf()对比法 这种判断...

    JavaScript几种数组去掉重复值的方法推举_.docx

    这个方法通过一个辅助数组`m`和布尔变量`f`来判断元素是否已存在于新数组中。如果不存在,则将其添加到新数组。这种方法避免了两层嵌套循环,但增加了额外的检查步骤。 5. **利用对象属性**(ov5): 这种方法利用...

    JavaScript判断数组是否存在key的简单实例

    在JavaScript编程中,数组是一种非常重要的数据结构...希望这个关于JavaScript判断数组是否存在键的简单实例能帮助你更好地理解和应用这些知识。在进行JavaScript编程时,一定要注意这些细节,以避免潜在的问题和错误。

    JavaScript中数组的一些算法和技巧总结

    - `array.includes(element)`:判断数组是否包含某个元素。 - `array.copyWithin(target, start, end)`:复制数组的一部分到同一数组的另一位置,不会改变原数组。 - 使用`Array.from()`和`Array.of()`将非数组...

    php中经典方法实现判断多维数组是否为空

    这个函数在这里的使用可能是为了安全考虑,但逻辑上与判断数组是否为空无关,有可能是代码片段被误插入或者是该函数用于别的目的,比如处理特定的输出格式。 递归判断多维数组是否为空的逻辑可以用伪代码表示如下:...

    javascript中利用数组实现的循环队列代码

    在本文中,我们将详细介绍如何使用JavaScript中的数组来实现一个循环队列。首先,我们定义了队列的大小(size),这意味着队列能够容纳的元素数量是有限的。我们创建了一个名为CircleQueue的构造函数,并在其原型上...

    JavaScript判断数组类型的方法

    前言 JavaScript中关于数组的判定问题,...如果是在支持ES5的浏览器中,用这样的方式自然没什么问题,但是如果是在IE9以下版本,这个方法并未受到支持,这时候我们就要用别的方式来判断数组。 二、instanceof 一般来

    浅谈js数据类型判断与数组判断

    在判断数组类型时,有以下几种常见方法: 1. `instanceof`:检查一个对象是否是特定构造函数的实例。例如,`arr instanceof Array`将返回`true`,如果`arr`是一个数组。但是,如果数组是从另一个环境中(比如Web ...

Global site tag (gtag.js) - Google Analytics