1. js 简单的隐式转换
1. 转为string类型
console.log(1 + 'str');//1str
console.log(-1 + 'str');//-1str
console.log(0 + 'str');//0str
conlose.log(NaN+'str');//NaNstr
console.log(true + 'str');//truestr
console.log(false + 'str');//falsestr
console.log(null + 'str');//nullstr
console.log(undefined + 'str');//undefined
console.log(NaN+'str');//NaNstr
总结:num、Boolean、null、undefined 和 str 一起,隐式转换为 str 类型。
#### 2.转为number类型
console.log('' + 1)//'1'
console.log('a' + 1);//'a1'
console.log('1' + 1);//'11'
console.log(NaN + 1);//NaN
console.log(true + 1);//2
console.log(false + 1);//1
console.log(null + 1);//1
console.log(undefined + 1);//NaN
总结:除了 str 类型,Boolean、null、undefined 与num一起 && ( ? + - * / % ),则Boolean、null、undefined 会隐式转换为 num 进行计算。
3. 转成boolean类型
!
: 有此(逻辑非运算符)就会发生此类隐式转换
console.log(!1);//false
console.log(!-1);//false
console.log(!0);//true
console.log(!NaN)//true
console.log(!'')//true
console.log(!'a');//false
console.log(!'1');//false
console.log(!true);//false
console.log(!false);//true
console.log(!null);//true
console.log(!undefined)//true
console.log(![]) //false
console.log(![1, 2, 3])//false
console.log(!{})//false
console.log(!{ a: 1 })//false
2. 数组常用的方法
- concat()
arr3 = arr2.concat(arr1)
- copyWithin()
let arr = ['a','b','c']
arr.copyWithin(2.0)
// ['a','b','a']
- entry()
entry() 方法返回一个带有键/值对的数组迭代器对象。
- every()
every() 方法检查 数组中的所有元素 是否 都 通过了测试(作为函数提供)。
arrs、fun()、every(): arrs.every(fun(arr)
如果arrs的每一个元素都能使得 fun() 返回 true,则 arrs.every(fun(arr) 为true。
let arr = ['4','5','6']
function checkNUm(num){
return num >= 2;
}
result = arr.every(checkNUm)
console.log(result) //true
- fill()
let arr = ['4','5','6']
result = arr.fill('ss')
console.log(result)
//['ss', 'ss', 'ss']
- filter()
arrs、fun()、filter(): arrs.filter(fun(arr)
arrs的元素由 fun()判断 并返回,所有返回的元素形成新的数组。
let arr = ['4','5','6']
function checkNUm(num){
return num >= 5;
}
result = arr.filter(checkNUm)
console.log(result)
// ['5', '6']
- find()
find() 方法返回数组中通过测试的第一个元素的值(作为函数提供)。
- findIndex()
findIndex() 方法返回数组中通过测试的第一个元素的索引(作为函数提供)。
- forEach()
方法对数组的每个元素执行一次提供的函数。
var array = ['a', 'b', 'c'];
array.forEach(function(element) {
console.log(element);
});
- includes()
可以判断一个数组中是否包含某一个元素,并返回true 或者false;
includes可以包含两个参数,第二个参数表示判断的起始位置
['4','5','6'].includes('5') //true
['4','5','6'].includes('5',2) // false
- indexOf()
indexOf() 方法在数组中搜索指定项,并返回其位置。
- lastIndexOf()
- isArray()
isArray() 方法确定对象是否是数组。如果对象是数组,Thinction 返回 true,否则返回 false。
- join()
将数组的元素转换为字符串。join() 方法将数组作为字符串返回。
join('#')传入的参数 '#' 作为分隔符。
- map()
map() 方法使用为每个数组元素调用函数的结果创建一个新数组。
var arr1 = [0,2,4,6,8];
var newArr = arr1.map(function(item,index,arr1){
console.log(arr1);
return item/2;
});
console.log(newArr);
9-15. forEach() VS map()
same:
1.都是循环遍历数组中的每一项
2.每次执行匿名函数都支持三个参数,参数分别为item(当前每一项),index(索引值),arr(原数组)
3.匿名函数中的this都是指向window
4.只能遍历数组
difference:
1.map()会分配内存空间存储新数组并返回,forEach()不会返回数据。
2.forEach()允许callback更改原始数组的元素。map()返回新的数组。
- pop()
pop() 方法删除数组的最后一个元素,并返回该元素。
- push()
push() 方法将新项添加到数组的末尾,并返回新长度。
- shift()
shift()方法:删除数组的第一项
- unshift()
unshift()方法: 在数组的第一项增加元素
- reduce()
reduce() 方法为数组的每个值(从左到右)执行提供的函数,并将数组缩减为单个值。
// 1.数组求和
var arr1 = [1,5,8,6,15,78,65,25,48,55]
var sum = arr1.reduce(function(total,currentValue){
return total+currentValue;
});
console.log(sum);//306
var eachSum = 0;
arr1.forEach(function(currentValue){
eachSum += currentValue;
})
console.log(eachSum);//306
//2.合并二维数组
var twoArr = [['mu','zi'],['dig','big'],['lucky','jiji']];
var oneArr = twoArr.reduce(function(total,currentValue){
// console.log(total)
return total.concat(currentValue);
})
console.log(oneArr);//["mu", "zi", "dig", "big", "lucky", "jiji"]
//3.统计一个数组中有多少个不重复的单词:
// 不用reduce时:
var arr = ["apple","orange","apple","orange","pear","orange"];
function getWordCnt(){
var obj = {};
for(var i= 0, l = arr.length; i< l; i++){
var item = arr[i];
obj[item] = (obj[item] +1 ) || 1;
}
return obj;
}
console.log(getWordCnt());//{apple: 2, orange: 3, pear: 1}
// 用reduce时:
var arr = ["apple","orange","apple","orange","pear","orange"];
function getWordCnt(){
return arr.reduce(function(prev,next){
prev[next] = (prev[next] + 1) || 1;
return prev;
},{});
}
console.log(getWordCnt());//{apple: 2, orange: 3, pear: 1}
- reduceRight()
reduceRight() 方法为数组的每个值(从右到左)执行提供的函数,并将数组缩减为单个值
- reverse()
reverse() 方法反转数组中元素的顺序。
- some()
some() 方法检查数组中的任何元素是否通过测试(作为函数提供)。它为数组中存在的每个元素执行一次函数。
23& some() VS every()
same:
every()与some()方法都是JS中数组的迭代方法。
different:
every()是对数组中每一项运行给定函数,如果该函数对 每一项 返回true,则返回true。
some()是对数组中每一项运行给定函数,如果该函数对 任一项 返回true,则返回true。
some一直在找符合条件的值,一旦找到,则不会继续迭代下去。
every从迭代开始,一旦有一个不符合条件,则不会继续迭代下去。
- slice()
截取元素:
slice() 方法选择从给定 start 参数开始的元素,并以给定的 end 参数结束,但不包括。它将数组中的选定元素作为新的数组对象返回。
- splice()
splice() 方法从数组添加/删除项目,并返回删除的项目。
array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
- sort()
sort() 方法对数组的项进行排序。
//arr.sort([compareFunction])
//数字排序(数字和升序)
var points = [40,100,1,5,25,10];
points.sort(function(a,b){return a-b});
1,5,10,25,40,100
- toString()
- valueOf()
valueOf() 方法返回数组。
该方法是数组对象的默认方法。
Array.valueOf() 将返回与 Array 相同的值。
引用: https://baijiahao.baidu.com/s?id=1710342804738121121&wfr=spider&for=pc https://www.jb51.net/article/154881.htm