大家好,关于深入解析数组:高效数据处理的基础很多朋友都还不太明白,今天小编就来为大家分享关于的知识,希望对各位有所帮助!
var arr=[
{a: 1},
[1,2,3],
函数(){返回真;}
];
arr[0] //对象{a: 1}
arr[1] //[1, 2, 3]
arr[2] //函数(){返回true;}
var a=[[1, 2], [3, 4]];
a[0][1] //2
a[1][1] //4
2. 数组的本质
本质上,数组是一种特殊的对象。 typeof 运算符返回一个类型为object 的数组。数组的特殊性在于它的键是一组按顺序排列的整数(0、1、2.)。 JavaScript语言规定对象的键名始终是字符串,因此数组的键名实际上也是字符串。之所以可以使用数值来读取,是因为非字符串键名会被转换为字符串。对象有两种读取成员的方法:“点”结构(object.key)和方括号结构(object[key])。但是,点结构不能用于数字键名称。
typeof [1, 2, 3] //"对象"
var arr=["a", "b", "c"];
arr["0"] //"a"
arr[0] //"a"
对象.keys(arr)
//["0", "1", "2"]
var arr=[1, 2, 3];
arr.0 //SyntaxError
3.length属性
只要是数组,就必须有length属性。该属性是一个动态值,等于键名中的最大整数加1。
var arr=["a", "b"];
arr.length //2
arr[9]="d";
arr.length //10 当数组的length属性设置为2(即最大整数键只能为1)时,那么整数键2(值为c)就不再存在于数组中,自动被已删除。上面的代码表示当length属性设置大于数组个数时,读取新添加的位置会返回undefined。
如果手动将长度设置为非法值,JavaScript 将报告错误。
var arr=[ "a", "b", "c" ];
arr.length //3
arr.length=2;
arr //["a", "b"]
var a=["a"];
a.长度=3;
a[1] //undefined
4.类数组对象
它们看起来像数组,你可以使用length 属性,但它们不是数组,所以你不能使用某些数组方法。类数组对象只有一个特征,那就是长度属性。
//数组的slice方法将类似数组的对象变成真正的数组。
var arr=Array.prototype.slice.call(arrayLike);
//for循环
函数logArgs() {
for (var i=0; i 参数.length; i++) {
console.log(i + "." + 参数[i]);
}
}
//forEach 方法
函数logArgs() {
Array.prototype.forEach.call(参数, 函数(elem, i) {
console.log(i+"."+elem);
});
//字符串也是类似数组的对象,所以也可以使用Array.prototype.forEach.call来遍历。
Array.prototype.forEach.call("abc", function(chr) {
控制台.log(chr);
});
//一个
//b
//c
}
5.in 运算符
检查某个键名称是否存在的运算符。它适用于对象和数组。
var arr=[ "a", "b", "c" ];
2 in arr //真
arr 中的"2" //true
4 in arr //false
var arr=[];
arr[100]="a";
arr 中的100 //true
1 in arr //false
6.for…in 循环和数组的遍历
for.in循环不仅可以遍历对象,还可以遍历数组。毕竟,数组只是一个特殊的对象。然而,for.in不仅会遍历数组中的所有数字键,还会遍历非数字键。
var a=[1, 2, 3];
a.foo=true;
for (var key in a) {
控制台.log(键);
}
//0
//1
//2
//foo
7.数组的空位
当数组中的某个位置为空元素,即两个逗号之间没有值时,我们说数组有洞。数组中的间隙不会影响长度属性。使用数组的forEach方法、for.in结构、Object.keys方法进行遍历,间隙会被跳过。如果某个位置未定义,则遍历时不会跳过该位置。 ```javascript
var a=[1, 2, 3];
删除a[1];
【深入解析数组:高效数据处理的基础】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
数组真是编程的基本功啊!
有15位网友表示赞同!
很多语言都有数组这个数据结构,感觉挺方便的.
有17位网友表示赞同!
学习数组可以让我更深入地理解代码的运行机制吧?
有12位网友表示赞同!
听说有些特殊场景下,数组还有一些高级用法呢?
有18位网友表示赞同!
有没有推荐一些好用的数组遍历技巧?
有20位网友表示赞同!
数组操作太复杂了,感觉自己头脑发懵...
有18位网友表示赞同!
学习过各种各样的数组排序方法吗?
有16位网友表示赞同!
数组的内存分配模式是怎么样的?
有19位网友表示赞同!
想了解一下不同语言下数组的实现细节。
有17位网友表示赞同!
在实际项目中,哪种类型的数组使用频率更高?
有13位网友表示赞同!
动态数组和静态数组的区别是什么呀?
有7位网友表示赞同!
有没有什么好用的工具可以帮我们高效地操作数组?
有5位网友表示赞同!
学习数组感觉有点抽象,有没有一些具体的案例帮助理解?
有5位网友表示赞同!
数组的应用场景非常广泛吧?
有11位网友表示赞同!
想学习一下如何利用数组实现某些数据结构。
有15位网友表示赞同!
数组与链表的区别在哪儿?
有18位网友表示赞同!
可以分享一些关于数组的有趣知识吗?
有11位网友表示赞同!
最近在学习算法,发现数组在这方面扮演很重要的角色。
有10位网友表示赞同!
学完数组之后,感觉编程思路更清晰了!
有10位网友表示赞同!
希望能够掌握好数组的各种操作技巧。
有19位网友表示赞同!