数组
var myArray = ["good",123]; 创建一个包含 字符串 和 数字 的数组 myArray。
var ourArray = [["the universe", 42], ["everything", 101010]]; 也可以在数组中包含其他数组这被称为一个多维数组。
可以把 多维 数组看作成是一个 数组中的数组。arr[i][j] i是第几个数组j是第几个数组中的第几个元素
例如
var arr = [
[1,2,3],
[4,5,6],
[7,8,9],
[[10,11,12], 13, 14]
];
arr[0]; // 等于 [1,2,3]
arr[1][2]; // 等于 6
arr[3][0][1]; // 等于 11
.unshift() 接受把一个或多个参数,并把它“推”入到数组的头部。
.push() 接受把一个或多个参数,并把它“推”入到数组的末尾。
var arr = [1,2,3];
arr.push(4);
// 现在arr的值为 [1,2,3,4]
.shift()函数用来“抛出”一个数组第一位的值
.pop() 函数用来“抛出”一个数组末尾的值。我们可以把这个“抛出”的值赋给一个变量存储起来。
var oneDown = [1, 4, 6].pop();
现在 oneDown 的值为 6 ,数组变成了 [1, 4]。
map方法迭代数组,这个方法不会改变原始数组
var oldArray = [1,2,3,4,5];
var timesFourArray = oldArray.map(function(val){ 参数val是数组中元素的值
return val * 4; 返回 4 8 12 16 20
});
reduce 方法迭代数组,并且把它累积到一个值中。
var array = [4,5,6,7,8];
var singleVal = 0;
singleVal = array.reduce(function(CalculatedVal, currentVal){ function(CalculatedVal, currentVal)这个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值,CalculatedVal为数组中的第一项,currentVal为第二项
return previousVal+currentVal; 返回 array 中的所有值相加的值 CalculatedVal=4+5=9, 9+6=15, 15+7=22, 22+8=30
});
filter方法迭代数组,并且按给出的条件过滤出符合的元素。不会改变原始数组。
var oldArray = [4,5,6,7,8];
var newArray = oldArray.filter(function(val){
return val<6; 返回数组中小于6的项,移除数组中大于等于6的项
});
sort 方法对数组中的元素进行排序。
var array = [1, 12, 21, 2];
array.sort(function(a, b) { function(a, b)为一个比较函数,sort 可以把比较函数作为参数传入
return a - b; 按照从小到大的顺序进行排列,return b-a 为从大到小
});
reverse 方法来翻转数组 (改变自身)
var myArray = [1, 2, 3];
myArray.reverse(); 结果myArray 变成了 [3, 2, 1]
concat 方法可以用来合并数组
var oldArray = [1,2,3];
var newArray = [];
var concatMe = [4,5,6];
newArray = oldArray.concat(concatMe); 将 concatMe 拼接到 oldArray 后面
split 方法按指定分隔符将字符串分割为数组。
var string = "Split me into an array";
var array = string.split(" "); 按照空格" "进行分割
join 方法来把数组转换成字符串
var veggies = ["Celery", "Radish", "Carrot", "Potato"];
var salad = veggies.join(" and "); 用指定的连接符" and "来连接起来
console.log(salad); 输出"Celery and Radish and Carrot and Potato"
slice() 方法可从已有的数组/字符串中返回选定的元素。 该方法并不会修改数组/字符串
array.slice(start,end) 包括start,不包括end
string.slice(start,end)
参数描述start必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。end可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
splice() 方法向数组中添加/删除项目,然后返回被删除的项目。 该方法会改变原始数组。
array.splice(index,howmany,item1,.....,itemX)
参数描述index必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。howmany必需。要删除的项目数量。如果设置为 0,则不会删除项目。item1, ..., itemX可选。向数组添加的新项目。
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。
string.indexOf(searchvalue,fromindex)
searchvalue 必需。规定需检索的字符串值。
fromindex 可选的整数参数。规定在字符串中开始检索的位置。它的合法取值是 0 到 string.length - 1。如省略该参数,则将从字符串的首字符开始检索。
如果要检索的字符串值没有出现,则该方法返回 -1。
var str="Hello world!"
document.write(str.indexOf("Hello") + "<br />")
document.write(str.indexOf("World") + "<br />")
document.write(str.indexOf("world"))
//0 -1 6
排序
arr.sort() 默认排序顺序是根据字符串Unicode码点
var fruit = ['cherries', 'apples', 'bananas'];
fruit.sort();
// ['apples', 'bananas', 'cherries']
arr.sort(compareFunction)
如果指明了 compareFunction ,那么数组会按照调用该函数的返回值排序。即 a 和 b 是两个将要被比较的元素:
● 如果 compareFunction(a, b) 小于 0 ,那么 a 会被排列到 b 之前;
● 如果 compareFunction(a, b) 等于 0 , a 和 b 的相对位置不变
● 如果 compareFunction(a, b) 大于 0 , b 会被排列到 a 之前。
● function compare(a, b) {
if (a is less than b by some ordering criterion) {
return -1;
}
if (a is greater than b by the ordering criterion) {
return 1;
}
// a must be equal to b
return 0;
}
如果比较数字,
function compareNumbers(a, b) { 升序排列
return a - b;
}
arr.sort(compareNumbers)
或者
arr.sort(function(a, b) {
return a - b;
});