JS数组
语法:
var cars = ["Saab", "Volvo", "BMW"];
访问数组元素
var name = cars[0];
数组是对象,使用typeof会返回object。
数组长度:.length。
访问最后一个数组:
var last = fruits[fruits.length - 1];
遍历数组:
for循环:
var fruits, text, fLen, i; fruits = ["Banana", "Orange", "Apple", "Mango"]; fLen = fruits.length; text = "<ul>"; for (i = 0; i < fLen; i++) { text += "<li>" + fruits[i] + "</li>"; }
.foreach循环:
var fruits, text; fruits = ["Banana", "Orange", "Apple", "Mango"]; text = "<ul>"; fruits.forEach(myFunction); text += "</ul>"; function myFunction(value) { text += "<li>" + value + "</li>"; }
添加元素:
- .push("XXX");
- fruits[fruits.length] = "lemon";
数组和对象区别:
- 在 JavaScript 中,数组使用数字索引。
- 在 JavaScript 中,对象使用命名索引。
- 数组是特殊类型的对象,具有数字索引。
JS数组方法
toString():把数组转换为数组值(逗号分隔)的字符串。
join(“ * ”):将所有数组元素结合为一个字符串。可以规定分隔符。
pop():从数组中删除最后一个元素,返回“被弹出”的值;
push():向数组添加一个新元素,返回新数组的长度;
shift():返回被“位移出”的字符串;
unshift():在开头向数组添加新元素,并“反向位移”旧元素;
delete fruits[0]:删除0号位元素;会留下数组未定义的空洞;不建议使用;
splice():
1、向数组添加新项;
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.splice(2, 0, "Lemon", "Kiwi");
第一个参数(2)定义了应添加新元素的位置(拼接)。
第二个参数(0)定义应删除多少元素。
其余参数(“Lemon”,“Kiwi”)定义要添加的新元素。
splice() 方法返回一个包含已删除项的数组。
2、删除元素;(不留空洞)
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.splice(0, 1); // 删除 fruits 中的第一个元素
concat():合并数组来创建一个新数组。
var myGirls = ["Cecilie", "Lone"]; var myBoys = ["Emil", "Tobias", "Linus"]; var myChildren = myGirls.concat(myBoys); // 连接 myGirls 和 myBoys
slice():裁剪某个片段切出新数组;(参数是数组下标)
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"]; var citrus = fruits.slice(3);
从元素3(Apple)开始切除一段数组。
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"]; var citrus = fruits.slice(1, 3);
从开始参数选取元素,直到结束参数(不包括)为止。
数组排序
排序:sort()
反转排序:reverse()
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.sort(); // 对 fruits 中的元素进行排序 fruits.reverse(); // 反转元素顺序
数字排序:sort是按照字符串顺序排序的;
如果数组按照字符串排序就会出现“25”大于“100”,因为“2”大于“1”;
我们可以通过一个比值函数修正:
var points = [40, 100, 1, 5, 25, 10]; points.sort(function(a, b){return a - b});
Math.max.apply([1,2,3]):返回数组最大值;
Math.min.apply([1,2,3]):返回数组最小值;
数组迭代
Array.forEach():为每个数组元素调用一次函数(回调函数)。
var txt = ""; var numbers = [45, 4, 9, 16, 25]; numbers.forEach(myFunction); function myFunction(value, index, array) { txt = txt + value + "<br>"; }
该函数接受 3 个参数:
- 项目值
- 项目索引
- 数组本身
Array.map():
- map() 方法通过对每个数组元素执行函数来创建新数组。
- map() 方法不会对没有值的数组元素执行函数。
- map() 方法不会更改原始数组。
var numbers1 = [45, 4, 9, 16, 25]; var numbers2 = numbers1.map(myFunction); function myFunction(value) { return value * 2; }
Array.filter():创建一个包含通过测试的数组元素的新数组。
以下例子为找出并生成大于18的数组
var numbers = [45, 4, 9, 16, 25]; var over18 = numbers.filter(myFunction); function myFunction(value, index, array) { return value > 18; }
Array.reduce():
- reduce() 方法在每个数组元素上运行函数,以生成(减少它)单个值。
- reduce() 方法在数组中从左到右工作。另请参见 reduceRight()。
- reduce() 方法不会减少原始数组。
var numbers1 = [45, 4, 9, 16, 25]; var sum = numbers1.reduce(myFunction); function myFunction(total, value, index, array) { return total + value; }
Array.every():检查所有数值是否通过测试。
Array.some():检查某些数值是否通过测试。
Array.find():返回通过测试函数的第一个数组元素的值。
Array.findIndex() :返回通过测试函数的第一个数组元素的索引。