标签:
引用类型:是一种数据结构,用于将数据和功能组织在一起。
5.1 Object——对象类型!
创建Object实例,第一种方法:使用new操作符后跟Object构造函数
1 1 var person = new Object();
2 2 person.name = "张三";3 person.age = "30";
第二种方法:字面量表示方法
var person = {
name = "张三",
age = 3
}; //注意:属性名也可以使用字符串 :"name" = "张三";
5.2 数组 Array 类型
ECMAScript 数组的每一项可以保存任何类型的数据,且数组的大小是可以动态调整的。
创建数组:
//第一种方法
var arr = new Array(); // 创建一个数组 arr
var colors = new Array(10);//创建一个长度为10 的数组
var num = new Array(1,2,3);//创建一个有三个项的 数组[1,2,3]
//第二种方法 数组字面量表示
var colors = ["red","blue","green"];
var food = []; //一个空数组
var sum =[1,2,]; //最好不这样创建,会创建一个包含2或3项的数组,ie8及以下中算3项。
在读取和设置数组的值时,要使用方括号并提供相应的值基于0的数字索引,数组的项数保存在其length属性中!
var num = [3,4,12,35,68,1];
alert(num[1]); // 显示第二项
alert(num[0]); // 显示第一项
alert(num.length);// 6
5.2.1 检测数组
var value = [1,2,3]
//ECMAScript3 规定,此方法假定直只有一个全局执行环境!
if (value instanceof Array){
//对数组执行某些操作
}
//ECMAScript 5 新增 Array.isArray()方法
if(Array.isArray(value)){
// 对数组执行某些操作
}
5.2.2 转换方法
所有对象都具有toLocalString(),toString(),valueOf()方法,其中调用数组的toString()方法返回数组中每个值得字符串形式拼接而成的一个以逗号分割的字符串。而valueOf()返回的还是数组。其中:alert()要接收字符串参数,所以会在后台调用toString()方法!!
var colors = ["red","blue","green"];
alert(colors.toString()); // red,blue,green
alert(colors.valueOf()); // red,blue,green
alert(colors); // red,blue,green
数组继承的toLocaleString()、toString()和valueOf()方法,在默认情况下都会以逗号分隔的字符串的形式返回数组!
join()方法重现了toString()方法的输出。如:
var colors = ["red","green","blue"];
alert(colors.join(",")); //输出 red,blue,green
alert(colors.join("||")); //输出 red||blue||green
5.2.3 数组方法
var num =[3,4,5,1,2];
var count = num.push(5,7,8,10); //接收 push方法后返回的数组的长度
alert(count); // 9
var remove = num.pop(); //接收pop方法返回的被移除的项
alert(remove); // 10
var num = [1,2,3];
var count = num.unshift(0);
alert(count);
var remove = num.shift();
alert(remove);
1 var values = [1,2,3,4,5];
2
3 values.reverse(); //反转数组排序
4
5 alert(values);
var sum = [0,1,5,10,15];
//sort()方法会调用每个数组项的toString()转型方法,然后比较得道的字符串
sum.sort();
alert(num); // 0,1,10,15,5
sort()接收一个比较函数作为参数。比较函数接收两个参数,如果一个参数应该位于第二个之前,则返回一个负数,如果相等返回 0 ,如果第一个参数应该位于第二个之后则返回一个正数!
function compare(value1, value2) {
if (value1 < value2) {
return 1;
} else if (value1 > value2) {
return -1;
} else {
return 0;
}
}
var values = [0, 1, 5, 10, 15];
values.sort(compare);
alert(values); // 15,10,5,1,0
//更简单的方法
var num = [0, 1, 5, 10, 15];
num.sort(function(a,b){
return a-b;
});
alert(num);
//两个数组合并成一个新的数组
var alpha = [a,b,c];
var numeric = [1,2,3];
var alphaNumeric = alpha.concat(numeric);//a,b,c,1,2,3
//三个数组和非数组值合并成一个新数组
var num1 = [1,2];
var num2 = [3,4];
var num3 = [5,6];
var nums = num1.concat(num2,num3,7);
alert(nums);
splice的返回值由被删除的元素组成的一个数组。如果只删除了一个元素,则返回只包含一个元素的数组。如果没有删除元素,则返回空数组。
var num = [1,2,3,4,,5,6,7];
var removed = num.splice(2,1,8,9,10);//从起始位置为2开始 删除 1 项,并添加8,9,10项
console.log(num); // [1, 2, 8, 9, 10, 4, 7: 5, 8: 6, 9: 7]
console.log(removed); //[3]
var numbers = [1,2,3,4,5,4,3,2,1];
console.log(numbers.indexOf(4)); // 3
console.log(numbers.lastIndexOf(4)); // 5
console.log(numbers.indexOf(4,4)); // 5
console.log(numbers.lastIndexOf(4,4)); // 3
console.log(numbers.indexOf(6)); // -1
var passed = [12,5,8,44,130];
console.log(passed.every(function(item,index,array){
return item>10;
})); //false
var passed = [12,5,8,44,130];
console.log(passed.every(function(item){
return item>3;
})); //true
var numbers = [1,2,3,4,5,4,3,2,1];
var result = numbers.filter(function(item){
return item > 3;
});
console.log(result); //[4, 5, 4]
function logArrayElements(element,index,array){
console.log("a["+index+"]="+element);
}
[2,3,45,56].forEach(logArrayElements);
//a[0]=2
// a[1]=3
//a[2]=45
//a[3]=56
var numbers = [1,2,3,4,5,4,3,2,1];
var mapResult = numbers.map(function(item, index, array){
return item * 2;
});
alert(mapResult); //[2,4,6,8,10,8,6,4,2]
function isBigEnough(element, index, array) {
return (element >= 10);
}
var passed = [2, 5, 8, 1, 4].some(isBigEnough);
// passed is false
passed = [12, 5, 8, 1, 4].some(isBigEnough);
// passed is true
var values = [1,2,3,4,5];
var sum = values.reduce(function(prev,cur,index,array){
return prev+cur;
},10);
console.log(sum); //25
注意:这些方法中,every()、filter()、forEach() 、map()、 some()这几个方法都属于迭代方法每个方法都接收两个参数:要在每一项上运行的函数和(可选的)运行该函数的作用域对象——影响this 的值。传入这些方法中的函数会接收三个参数:数组项的值、该项在数组中的位置和数组对象本身!
另外还有 ECMAScript 2015(ES6)规范的一些方法,会在学习之后添加上!
标签:
原文地址:http://www.cnblogs.com/zbhx/p/5697252.html