Home > Web Front-end > JS Tutorial > Introduction to Javascript Array Basics_Basic Knowledge

Introduction to Javascript Array Basics_Basic Knowledge

WBOY
Release: 2016-05-16 15:10:51
Original
1187 people have browsed it

Javascript is a magical language, and its arrays are equally unique. We get rid of the dross, extract the essence, and summarize the commonly used best practices. If there are any errors, please point them out.

Javascript array is an array-like object that has the characteristics of an object. When the property names are small, contiguous integers, an array should be used; otherwise, an object should be used.

Array source

All arrays are constructed from Array. Let’s test the constructor property.

var arr = [];
arr.constructor === Array; // true
arr.constructor === Array.prototype.constructor; // true
Copy after login

Create array

//数组字面量方式
var arr1 = [1, 2, 3]; // [1,2,3]

//构造函数方式
var arr2 = new Array();    // [] 空数组
var arr3 = new Array('9');   // ["9"] 一个字符串元素
var arr4 = new Array(9);    // [] 数组长度length为9
var arr5 = new Array([9]);   // [[9]] 相当于二维数组
var arr6 = new Array(1, 2, 3); // [1, 2, 3]
var arr7 = new Array(1, function f(){}, {o : 6}, null,undefined,true);
// 数组可以存储任意混合数据类型

Copy after login

Due to the way arr4 works, when only one numeric parameter is passed to the Array constructor, the constructor will return an empty array with the length attribute set. Therefore, it is recommended to use the array literal method, which is short and concise.

Detect whether the object is an array

var arr1 = [1, 2, 3];
typeof(arr1); // object
Copy after login

It is well known that typeof does not detect types correctly.

arr1 instanceof Array; //true
Copy after login

The instanceof method has no problem within a web page. Once other web pages are nested, there will be two global scopes, and there will be problems in the detection when calling each other.

Array.isArray(arr1); // true
Copy after login

Array.isArray() is a new method in ECMAScript5 and has no defects. The only problem is that the IE8 browser does not support it, and the IE9 browser does not support it in strict mode.

Object.prototype.toString.apply(arr1).slice(8, -1); // Array
Copy after login

The last way is the best way to detect the type.

Array length

The length of the array is also its attribute. Increasing the length will not cause an out-of-bounds error.
The length value is equal to the largest integer attribute name of the array plus 1.

var arr1 = [];
arr1[9] = 1; // 长度为10,只包含一个元素的数组
Copy after login

Set a small value to delete attributes whose names are greater than or equal to length.
If the length value is set to 0, it is equivalent to clearing the array.

var arr2 = [1, 2, 3, 4, 5];
arr2.length = 3; // [1, 2, 3]
arr2.length = 0; // []
Copy after login

Array traversal

To traverse an array, do not use a for in loop to traverse the array, because for in will traverse all properties on the prototype chain, but we don’t need so many. It is recommended to use for loop.

var arr1 = [1, 2, 3];
arr1.test = 9;

//for in 方式
for(var prop in arr1){
  cosole.log(prop, arr1[prop]);
}
// 输出如下
// 0 1
// 1 2
// 2 3
// test 9

//for循环方式
for(var i = 0, len = arr1.length; i < len; i++){
  console.log(arr1[i]);
}
//输出如下
// 1
// 2
// 3

Copy after login

We see that the for in method has an extra test value, which can be eliminated using the hasOwnProperty function, but that will be much slower than the for loop method.
Caching the array length is a necessary step, and there is a performance overhead for each access (the latest browsers have optimized this aspect).

Summary

A brief introduction to the basic knowledge of Array. At this point, you can have a more comprehensive understanding of Array. The next article introduces the Array method.

Although there are many aspects of Javascript that are not easy to understand, over a long period of study, I have slowly fallen in love with it (because there are no girls for me to love now).

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template