`
zhouyrt
  • 浏览: 1141631 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

对象无length属性时IE6/7中无法将其转换成伪数组(ArrayLike)

 
阅读更多

有时需要将数组转成伪数组(ArrayLike),如下

var ary = ['one','two','three'];
var obj = {}; // 没有length属性
Array.prototype.push.apply(obj, ary);
for(var i in obj){
	alert(i + ': ' + obj[i]);
}

 

IE8/9/Firefox/Safari/Chrome 依次弹出了obj的key及其value。即能转换成ArrayLike。

IE6/7 下则不能,没有输出任何信息表明obj仍然是个空对象。

 

如果给obj加个length属性,情况则不同

var ary = ['one','two','three'];
var obj = {length:0}; // 有length,值为0
Array.prototype.push.apply(obj, ary);
for(var i in obj){
	alert(i + ': ' + obj[i]);
}

 

这次IE6/7(所有浏览器 )中均弹出了key及其value,都能转换成ArrayLike

 

注意,length只能赋值为0而非它值,否则得到的对象key和value就不是一一对应的了。

var ary = ['one','two','three'];
var obj = {length:2}; // 有length,非零值
Array.prototype.push.apply(obj, ary);
for(var i in obj){
	alert(i + ': ' + obj[i]);
}

 

相关:

将HTMLCollection/NodeList/伪数组转换成数组

0
1
分享到:
评论

相关推荐

    对象无length属性时IE6/IE7中无法将其转换成伪数组(ArrayLike)

    有时需要将数组转成伪数组(ArrayLike),如下 代码如下: var ary = [‘one’,’two’,’three’]; var obj = {}; // 没有length属性 Array.prototype.push.apply(obj, ary); for(var i in obj){ alert(i + ‘: ...

    JS Array.from()将伪数组转换成数组的方法示例

    `Array.from()`是JavaScript ES6新增的一个方法,用于将类似数组的对象或可遍历对象转换成真正的数组。本文将深入探讨`Array.from()`的工作原理、使用场景以及它与其他转换方法的对比。 首先,我们了解什么是伪数组...

    前端面试题之arrayLike.zip

    ArrayLike对象是指那些看起来像数组,但并不是真正数组的对象,它们通常拥有一个length属性,并且可以通过索引来访问其元素。在本篇文章中,我们将深入探讨ArrayLike的概念、使用场景以及如何将其转换为真正的数组。...

    JavaScript类数组对象转换为数组对象的方法实例分析

    在JavaScript中,类数组对象(Array-like object)是一种拥有`length`属性且可以通过索引访问其元素的对象,但它们并不具备数组所具有的内置方法,如`push`、`pop`、`shift`等。因此,当我们需要对类数组对象进行...

    前端面试题之baseJS-arrayLikeToArr.zip

    "baseJS-arrayLikeToArr.zip"这个压缩包文件聚焦于基础JavaScript(baseJS)中的一个重要概念:将类数组对象转换为真正的数组(arrayLikeToArr)。在前端面试中,这类问题经常出现,因为它涉及到对JavaScript核心...

    读jQuery之五(取DOM元素)

    首先,使用document.getElementsByTagName等原生JavaScript方法获取元素集合(HTMLCollection/NodeList),然后将其转换成真正的数组,最后将数组转换成伪数组(ArrayLike对象),也就是jQuery对象。jQuery对象在很...

    ES6新特性七:数组的扩充详解

    1) Array.from方法用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括ES6新增的数据结构Set和Map,他们都部署了iterator接口,字符串也是)。 let arrayLike = {...

    es6数组的方法的集合

    11. `toString()`:将数组转换为逗号分隔的字符串形式,不改变原数组。 ```javascript let arr = [1, 2, 3]; let str = arr.toString(); console.log(str); // 输出:"1,2,3" ``` 12. `valueOf()`:返回数组的原始...

    前端大厂最新面试题-array.docx

    Array.from()将两类对象转换为真正的数组:类似数组的对象和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。例如: let arrayLike = { '0': 'a', '1': 'b', '2': 'c', length: 3 }; let ...

    ES6入门教程之Array.from()方法

    在ES6中,`Array.from()`方法是一个非常实用的工具,它允许我们将各种类型的数据转换成正规的数组。这个方法主要适用于两类对象:部署了Iterator接口的对象(如Set、Map和Array本身)以及类数组对象。类数组对象是指...

    js代码-js Array from 从字符串中生成一个数组

    类数组对象是指拥有一个`length`属性和若干索引属性(通常是数字)的对象,但它们并不直接继承自`Array.prototype`。字符串在JavaScript中就是这样一种特殊的类数组对象,每个字符都有对应的索引,如`'hello'[0]`会...

    js代码-手写代码练习-----类数组转数组

    在JavaScript中,类数组对象(Array-like Object)是一种特殊的对象,它们拥有类似于数组的属性,如length和索引,但不具有数组的所有方法,比如push、pop、slice等。本练习主要关注如何将这些类数组对象转换为真正...

    ECMAScript 6即将带给我们新的数组操作方法前瞻

    本文介绍ECMAScript 6即将带给我们新的数组操作方法,以及在怎样在现有浏览器应用这些新的数组特性。 Note: 我将使用交替使用构造器(constructor)和类(class)两个术语。 类方法 数组(Array)自身所拥有的方法。 Array...

    C# 索引器的一个简单例子,模仿数组

    本篇文章将深入探讨C#中的索引器,包括其工作原理、如何定义以及在实际开发中的应用。 首先,我们需要了解索引器的基本结构。在C#中,索引器通常定义为类的成员,并具有一个或多个参数,这些参数代表索引值。索引器...

    Numpy中Typing (numpy.typing)的使用.pdf

    - **0D 数组的处理**:运行时,NumPy 会自动将 0D 数组转换为其对应的标量值。但在类型注解中,这种转换并不总是正确处理。如果某个操作已知会产生这样的转换,可以通过 `.cast` 或 `#type: ignore` 显式处理。 - *...

    前端Javascript相关面试基础问答整理md

    - 拥有 `length` 属性和索引元素,但不具有 `push`、`pop` 等方法。 **转换成数组**: - 使用 `Array.from()` 或 `[].slice.call(arrayLike)`。 #### 4. 数组的常见 API - `map`, `filter`, `reduce`, `forEach`,...

Global site tag (gtag.js) - Google Analytics