关于javascript:js基础之数组方法

6次阅读

共计 2961 个字符,预计需要花费 8 分钟才能阅读完成。

操作数组的办法

> push pop shift unshift join reverse concat slice splice 
> toString toLocaleString indeOf lastIndexOf sort find findIndex fill includes Array.from 
> forEach map filter every some reduce reduceRight new  for-in for-of
> new Set() new Map()
push pop 在数组最初增加或删除元素
shift unshift 在数组后面增加和删除元素
// slice(start, end)不蕴含 end 不扭转原数组 和 splice()区别

var arr = [1,2,3,4,5,6];
console.log(arr.slice(2)); //[3,4,5,6] 一个 start 默认到数组开端
console.log(arr.slice(2,8)); //[3,4,5,6] 超过数组长度按 arr 长度算
console.log(arr.slice(2,5)); //[3,4,5] 2-4 不蕴含 5 下标
console.log(arr.slice(2,-1)); //[3,4,5] 绝对于倒数第一个之前
console.log(arr.slice(-2));//[5,6] 一个参数负值从倒数第二个到最初
console.log(arr.splice(1)) // [] 扭转原数组 清空
console.log(arr.splice(0, 1)) // 返回[1] 选取一个 arr=[2, 3, 4, 5, 6]
console.log(arr.splice(1, 0, 9)) // 返回[] arr = [1, 9, 2, 3, 4, 5, 6] 两头为 0 代表插入元素 第三个参数为插入的元素
console.log(arr.splice(1,1,8)) // 返回被替换的[2] arr = [1, 8, 3, 4, 5, 6]
 
// forEach 和 map,reduce 的区别
map:接管一个函数,返回新数组
forEach 承受一个函数,会扭转原数组 个别用于对数组间接操作的批改
reduce- 会扭转原数组 -- reduce 函数是为数组中每一个元素顺次执行回调函数,不包含数组中的被删除或未被赋值的元素
arr.reduce(callback(val,index,array), [initiaValue])
1.prev 上一次调用回调返回的值 prev 第一次为初始值 initiaValue
2. 数组中以后被解决的元素
3.index 以后元素在数组中的索引
4.array 调用 reduce 的数组

// for in 和 for of 区别
for of 是 ES6 新增的循环办法
for in 循环遍历的是数组的键值(索引),而 for of 循环遍历的是数组的值。
给数组增加一个自定义属性 name,并且赋值 ” 数组 ”。
而后进行遍历输入的,会发现新定义的属性也被 for in 输入来了,
而 for of 并不会对 name 进行输入。

// every 和 some 的区别
 every 相当于 || 的关系有一项满足就成立
const enum1 = (val) => {return val < 10}
console.log([1,20,3,8].some(enum1)) // true
some 相当于 && 的关系 所有满足才成立
console.log([1,20,3,8].every(enum1)) // false
// es6 新增的 find() findIndex() fill() from()  includes() reduce
console.log([1,2,3].find(i => i >2)) // 3 返回过滤后的元素
console.log([1,2,3].findIndex(i => i >2)) // 2 下标为 2
console.log([1,2,3].fill(9,0,2))// 用新元素替换掉数组内的元素 fill(value, start, end) [9, 9, 3]  替换 9 从 0 开始替换两个
console.log(Array.from('abcd')) // ['a', 'b', 'c', 'd'] 把元素转化为数组
console.log(Array(1,2,3)) // [1, 2, 3])
// includes 相似 indexOf
console.log([1,2,6].includes(6))  // true
console.log([1,2,6].indexOf(6,0)) // 2 返回下标 从第 0 个下标开始 查找 6 

string|array.indexOf(searchvalue,fromindex) // 返回下标 不存在返回 -1

// 数组 A 以双倍模式放到 B 数组
// for
var numbers = [1,2,3]
var doublenum = []
for (var i =0; i<numbers.length; i++){doublenum.push(numbers[i] * 2)
}
console.log(doublenum) // [2, 4, 6]
// map
const maparr = numbers.map(num => num *2)
console.log(maparr) // [2, 4, 6]
// 抽离某些属性到一个数组
const colorarr = [
  {color: 'red',},
  {color: 'yellow'}
]
const reducearr2 = colorarr.reduce((arr1, arr2) => {arr1.push(arr2.color) 
  return arr1
}, [])
console.log(reducearr2) // ['red', 'yellow']
// 数组去重的几种办法 [键值对 |indexOf| 排序后相邻去除法
// 键值对
let testres = []
let testjson = {}
const testarr = [1,2,3,2,5,,]
for (let i = 0; i<testarr.length; i++) {if (!testjson[testarr[i]]) {testres.push(testarr[i])
      testjson[testarr[i]] = 1
  }
}
console.log(testarr) // [1, 2, 3, 2, 5, <1 empty item>]

const testarr2 = [1,2,3,4,2,3,5]
// set 形式
console.log([...new Set(testarr2)]) // [1, 2, 3, 4, 5]

// 原始 indexOf
const testarr2 = [1,2,3,4,2,3,5]
for (let i = 0; i< testarr2.length; i++) {if (res_.indexOf(testarr2[i]) === -1) {res_.push(testarr2[i])
  }
}
console.log(res_) // [1, 2, 3, 4, 5]

//sort
const testarr2 = [1,2,3,4,2,3,5]
function sortRep (arr) {arr.sort()
  var temp = [arr[0]]
  for (var i =1; i<arr.length; i++) {if(arr[i] !== temp[temp.length - 1] ) {temp.push(arr[i])
    }
  }
  return temp
}
console.log(sortRep(testarr2)) // [1, 2, 3, 4, 5]
正文完
 0