JavaScript学习笔记深究JavaScript

js高三精炼 —— 引用类型(上)

2016-11-08  本文已影响53人  Angeladaddy

Object

// 以下两种表示方式一样
var p = new Object(); 
var p = {};
//对象属性可用.访问,也可以用方括号
p.name 等同于 p['name'],后一种方式用在特殊情况如
p['first name']//名称中有空格,无法用.访问

Array

js中数组的两个特点:

  1. 数组每一项类型可以不同
  2. 数组大小可以动态调整
  3. 数组最大可以容纳 4294967295个项
var ls = new Array();
var  ls = new Array(4);
var ls = new Array('aaa','bbb','ccc');
var ls = [];
var ls= ['aaa','bbb','ccc'];
//数组检测(用ES5 isArray方法)
Array.isArray(ls) // true

var a = [1,2,3,4,5,65];
a.toString();//输出逗号分隔的字符串 "1,2,3,4,5,65"
a.valueOf();//依然输出数组 [1, 2, 3, 4, 5, 65]
a.join('$');//join只接收一个参数,即分隔符 "1$2$3$4$5$65"

数组的LIFO(栈)操作:

var a = [1,2,3,4,5,6];
a.push(7); 
a.push(8,9); // [1,2,3,4,5,6,7,8,9]
a.pop();  // [1,2,3,4,5,6,7,8]

数组的FILO(队列)操作:

a.shift(); // [2,3,4,5,6,7,8];
a.unshift(100); //[100,2,3,4,5,6,7,8];

数组的排序
-sort方法可以传入一个compare方法,制定排序的方法

let a = [2,1,5,9,0];
//a.reverse();

function sortByAsc(value1,value2){
    return value1-value2>0;
}
function sortByDesc(value1,value2){
    return value1-value2<0;
}
a.sort(sortByAsc); //[0,1,2,5,9]
a.sort(sortByDesc);//[9,5,2,1,0]

console.log(a);

数组的操作方法:

let a = [2,1,5,9,0];
let b = ['aaa','bbb','ccc'];
let c = a.concat(b);
let d = c.slice(0,4);
console.log(c,d); //[ 2, 1, 5, 9, 0, 'aaa', 'bbb', 'ccc' ] [ 2, 1, 5, 9 ]
console.log(a); //[ 2, 1, 5, 9, 0 ]

let a = [1,2,3,4,5,6];
let removed = a.splice(1,2);// 从下标1开始,包括1,删除2个元素 
console.log(a,removed); // [ 1, 4, 5, 6 ] [ 2, 3 ]

let removed = a.splice(1,0);// [ 1,2,3, 4, 5, 6 ] [ ]

let removed = a.splice(1,1,666,777,888); //[ 1, 666, 777, 888, 3, 4, 5, 6 ] [ 2 ]

every(),some(),filter(),forEach(),map()
这些方法都不会修改原始数组

let a = [1, 2, 3, 4, 5, 6];
//every
let result = a.every(function(element, index, array) {
    return element > 2
});
console.log(result);//false

//some
let result = a.some(function(element, index, array) {
    return element > 2
});
console.log(result);//true

//filter
let result = a.filter(function(element, index, array) {
    return element > 2
});
console.log(result);//[ 3, 4, 5, 6 ]

//map: 返回一个新数组,这个数组的每一项都是在原始数组中的对应项上运行传入函数的结果
let result = a.map(function(element, index, array) {
    return element * 2;
});
console.log(result);//[ 2, 4, 6, 8, 10, 12 ]

//forEach,类似for

Recude(), reduceRight()
迭代数组每一项,最后构建一个返回值,reduce从第一项开始,reduceRight从最后一项开始

let a = [1, 2, 3, 4, 5, 6];
let result = a.reduce(function(preview,current,index,array){
    console.log('preview: '+ preview, ' current: '+current,
         '\nindex: '+index,' array: '+array);
    return preview+current;
});
console.log(result);
// preview: 1  current: 2
// index: 1  array: 1,2,3,4,5,6
// preview: 3  current: 3
// index: 2  array: 1,2,3,4,5,6
// preview: 6  current: 4
// index: 3  array: 1,2,3,4,5,6
// preview: 10  current: 5
// index: 4  array: 1,2,3,4,5,6
// preview: 15  current: 6
// index: 5  array: 1,2,3,4,5,6
// 21 

上一篇 下一篇

猜你喜欢

热点阅读