var userId = 1;
var employeeId = 12;
var personnelLists = [12,45,1,4,8,9]
let arr;
arr = personnelLists.map(item => {
if (item !== userId && item !== employeeId) {
return item
}
})
console.log(arr)
[undefined, 45, undefined, 4, 8, 9] 为什么会出现2个undefined呢?而不是我预期的 [45, 4, 8, 9]
是因为map()方法创建了一个新数组,但新数组并不是在遍历完arr后才被赋值的,而是每遍历一次就得到一个值
改为filter 实现:
var userId = 1;
var employeeId = 12;
var personnelLists = [12, 45, 1, 4, 8, 9]
let arr;
arr = personnelLists.map((item, index) => {
if (item !== userId && item !== employeeId) {
return item
}
// delete personnelLists[index]; //delete方法删除掉数组中的元素后,会把该下标出的值置为undefined,数组的长度不会变
})
console.log(arr)
let newArr = [undefined, 45, undefined, 4, 8, 9].filter(item => item !== undefined)
console.log(newArr) // [45, 4, 8, 9]
// console.log( personnelLists.splice(0,1))//[12]
// console.log( personnelLists)//[45, 1, 4, 8, 9]
var a = [5, 12]
var b = [5, 78, 985245, 124, 45, 12]
// b中过滤掉a中的元素
const c = b.filter((item) => {
return a.indexOf(item) === -1
})
console.log('c', c) //[78, 985245, 124, 45]
map 应用于:
var array1 = [1, 4, 9, 16];
const map1 = array1.map(x => {
if (x == 4) {
return x * 2;
}
return x;
});
console.log(map1)//[1, 8, 9, 16]