数组
创建数组的四种方式:
var arr1 = new Array('a', 'b', 'c'); //这是一个预定义的数组,在创建时初始化 var arr2 = ['a', 'b', 'c' ]; //同样是在创建时初始化,但是这种创建更为简洁直观 var arr3 = new Array( ); var arr4 = [ ]; //这两种是创建空的数组
请注意,如果通过索引赋值时,索引超过了范围,同样会引起Array大小的变化:
var arr = [1, 2, 3]; arr[5] = 'x'; arr; // arr变为[1, 2, 3, undefined, undefined, 'x']
大多数其他编程语言不允许直接改变数组的大小,越界访问索引会报错。然而,JavaScript的Array却不会有任何错误。在编写代码时,不建议直接修改Array的大小,访问索引时要确保索引不会越界。
1.数组普通的定义和遍历
var arr = [1, 'd', 3, 'a', 2, 4, 3]; arr.forEach(function(value,index,array) { console.log(value+","+index+","+array[index]); }); //普通遍历 for(var i =0,len=arr.length;i<len;i++){ console.log(i+':'+arr[i]); } //遍历出来的是value(for...of) for (var item of arr) { console.log(item); } //遍历出来的是索引(for ...in) for (const key in arr) { if (arr.hasOwnProperty(key)) { const element = arr[key]; console.log(key + ':' + element); } }
2.数组里面放对象
特别注意要用:对象[key]取值
//数组中放对象: var arrTmp = [{ name: 'zhangsan', age: 18, gender: 'male' }]; for (var i in arrTmp) { for (var key in arrTmp[i]) { console.log(key + ":" + arrTmp[i][key]) } }
3 给数组添加属性
var properties = ['hello', 'hi']; properties.name = 'zhangsan';//给数组加入一个name属性 --> Array.prototype.name = 'zhangsan'; for (const key in properties) { if (properties.hasOwnProperty(key)) { const element = properties[key]; console.log(key + ':' + element); } }

// for...of 不会循环出数组的属性值 var a = ['A', 'B', 'C']; a.name = 'Hello'; for (var x of a) { console.log(x); // 'A', 'B', 'C',不会有'Hello' } // for...in 会循环出数组的属性 for (var x in a) { console.log(x); // '0', '1', '2','name' } for ... in循环将把name包括在内,但Array的length属性却不包括在内。 for ... of循环则完全修复了这些问题,它只循环集合本身的元素 这就是为什么要引入新的for ... of循环。
https://www.cnblogs.com/sxhlf/p/7941980.html
数组的常见操作:
map():
js从数组中的对象取出特定字段并生成新的数组:
var arr = [ { 'id': '1', 'name': 'img1', 'imgUrl': './img1.jpg', }, { 'id': '2', 'name: 'img2', 'imgUrl': './img2.jpg', }, { 'id': '3', 'name': 'img3', 'imgUrl': './img3.jpg', } ]; arr.map(x => {return x.imgUrl}) // 生成数组
JS中从数组对象中提取需要的某些字段:
let res = arr.map(({name, id}) => ({ id, name }))
console.log(res)

浙公网安备 33010602011771号