You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
var arr = [1, 3, 5, 7, 9];
arr.reduce(function (x, y) {
return x + y;
}); // 25
reduceRight();反向并归
七 判断数组
2-3种方法
var ss=[];
typeof ss; // object
ss instanceof Array; // true
Array.isArray(ss); // true;
八 将nodeList转换成数组
(2方法)
var elements = document.querySelectorAll("p"); // NodeList var arrayElements = [].slice.call(elements); // Now the NodeList is an array var arrayElements = Array.from(elements); // This is another way of converting
九 数组元素的洗牌
var list = [1,2,3];
list.sort(function() { return Math.random() - 0.5 })); // [2,1,3]
上述的是 投机取巧的方式
真正的数组乱序,请见
function shuffle(a) {
var length = a.length;
var shuffled = Array(length);
for (var index = 0, rand; index < length; index++) {
rand = ~~(Math.random() * (index + 1));
if (rand !== index)
shuffled[index] = shuffled[rand];
shuffled[rand] = a[index];
}
return shuffled;
}
function shuffle(a) {
var b = [];
while (a.length) {
var index = ~~(Math.random() * a.length);
b.push(a[index]);
a.splice(index, 1);
}
return b;
}
十.考题
Array.isArray( Array.prototype )
// true ;because:Array.prototype is an Array
vara=[0];if([0]){console.log(a==true);}else{console.log("wut");}// false ; // because:[0] as a boolean is considered true. Alas, when using it in the comparisons it gets converted in a different way and all goes to hell.
数组
[[toc]]
0、数组的方法大合集
::: tip
这是一个详情块,在 IE / Edge 中不生效
:::
一、对数组的增 删 改 查:
❤️
1.1数组的增加
1.2 数组的删除
1.3 改
1.4查
indeOf()
lastIndexOf()
find()
findIndex()
includes()
二、数组深浅拷贝
对象和数组的拷贝有两种
浅拷贝即 拷贝了指针指向,当一个对象的值改变会影响另一个对象的值。
深拷贝, 拷贝的是真正的值。2者相互独立,互不干扰。
2.1浅拷贝的方法4种方法
注:concat 和 slice 对一维数组 能算是深拷贝;2维的 是浅拷贝
2.2 深拷贝的方法5种方法:
一维数组和对象的concat slice法 JSON.parse(JSON.stringify(arr)) 和遍历法 解构赋值法
示例:(前3种毕竟简单,这里也不表述)
解构赋值法:const a1 = [1, 2]; const a2 = [...a1];或者const [...a2] = a1;
var deepCopy = function(obj) {
if (typeof obj !== 'object') return;
var newObj = obj instanceof Array ? [] : {};
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
newObj[key] = typeof obj[key] === 'object' ? deepCopy(obj[key]) : obj[key];
}
}
return newObj;
}
三、数组与字符串 对象的转换
3.1字符串转数组
es5 split(',');
es6 扩展运算符
3.2数组转字符串
3.3 类似数组对象转数组
3.4一组值转为数组
es6 Array.of(2,3,4); // [2,3,4]
四、数组去重
[...new Set(arr1)]
五、 数组的5个迭代方法----在数组的每一项上运行函数
filter();---返回true项的数组
❤️ map();-----返回运算后的组成的新数组:
every();--每一项都是true,则返回true
❤️ forEach();-----无返回值,不可链式调用
some();----有一项返回true,则返回true
六、并归方法
reduce();
Array的reduce()把一个函数作用在这个Array的[x1, x2, x3...]上,这个函数必须接收两个参数,reduce()把结果继续和序列的下一个元素做累积计算,
[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)
reduceRight();反向并归
七 判断数组
2-3种方法
八 将nodeList转换成数组
(2方法)
var elements = document.querySelectorAll("p"); // NodeList var arrayElements = [].slice.call(elements); // Now the NodeList is an array var arrayElements = Array.from(elements); // This is another way of converting
九 数组元素的洗牌
var list = [1,2,3];
list.sort(function() { return Math.random() - 0.5 })); // [2,1,3]
上述的是 投机取巧的方式
真正的数组乱序,请见
十.考题
Array.isArray( Array.prototype )
// true ;because:Array.prototype is an Array
[]==[]
// false;because: == is the spawn of satan.
十一 应用
. 实现扁平化数组
The text was updated successfully, but these errors were encountered: