JavaScript高级设计程序(第三版)学习笔记
toString() :返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串 。
valueOf() :调用valueOf()返回的还是数组。
var colors = ["red", "blue", "green"]; // 创建一个包含 3 个字符串的数组
alert(colors.toString()); // red,blue,green
alert(colors.valueOf()); // red,blue,green
alert(colors); // red,blue,green
alert(Array.isArray(colors.valueOf())); // ture
alert(Array.isArray(colors.toString()));// false
alert(typeof colors.toString() ); // string
alert(typeof colors.valueOf() ); //object
alert(colors.valueOf() instanceof Array);//ture
调用valueOf()方法时,直接将数组传递给了alert(),由于alert()要接收字符串参数,所以它会在后台调用toString()方法,由此会得到与直接调用toString()方法相同的结果。
join() :只接收一个参数,即用作分隔符的字符串,然后返回包含所有数组项的字符串。如果不给join()方法传入任何值,或者给它传入undefined,则使用逗号作为分隔符。
var colors = ["red", "green", "blue"];
alert(colors.join()); //red,green,blue
alert(colors.join(""));//redgreenblue
alert(colors.join(" "));//red green blue
reverse() ,sort() :会作用于数组本身。
var values = [1, 2, 3, 4, 5];
values.reverse();
alert(values); //5,4,3,2,1数组自身发生了变化
var values = [0, 1, 5, 10, 15];
values.sort();
alert(values); //0,1,10,15,5
var arr = new Array(1 ,3 ,5);
arr[4]='z';
arr2 = arr.reverse();
arr3 = arr.concat(arr2);
alert(arr3);//z,,5,3,1,z,,5,3,1
注意:arr变成了[z, ,5,3,1]而不是原来的[1,3,5, ,z]。
数组去重面试:
function hasContain(arr, num)
{
var i=0;
for(i=0;i<arr.length;i++)
{
if(arr[i]==num)
{
return true;
}
}
return false;
}
var arr=[1,2,3,4,1,5,6,4,8];
var aResult=[];
var i=0;
for(i=0;i<arr.length;i++)
{
if(!hasContain(aResult, arr[i]))
{
aResult.push(arr[i]);
}
}
alert(aResult);