当前位置:   article > 正文

JS基础知识之数组_js replace函数生成数组吗

js replace函数生成数组吗

一、类数组转化为数组

1.Array.prototype.slice.call()

  1. function sum (){
  2. let arr = Array.prototype.slice.call(arguments);
  3. console.log(arr.reduce((sum,cur)=> sum + cur),arr)//arr可以调用数组原生方法了
  4. }
  5. sum(1,2);//3 [1,2]

2.Array.form()

  1. function sum(a,b){
  2. let arr = Array.from(arguments);
  3. console.log(arr.reduce((sum,cur)=> sum + cur))//arr可以调用原生方法
  4. }
  5. sum(1,2);//3

3.ES6展开运算符

  1. function sum (a,b){
  2. let arr = [...arguments];
  3. console.log(arr.reduce((sum,cur)=> sum + cur));//arr可以调用数组原生方法
  4. }
  5. sum(1,2)//3

4.利用concat + apply

  1. function sum (a,b){
  2. let arr = Array.prototype.concat.apply([],arguments);
  3. console.log(arr.reduce((sum,cur)=> sum + cur));//arr可以调用数组原生方法
  4. }
  5. sum(1,2)//3

二、JS判断数组中是否包含某个值

1.array.indexOf

  1. 返回数组原素的下标,否则返回-1
  2. var arr = [1,2,3,4];
  3. var index = arr.indexOf(3);
  4. console.log(index)//返回数组原素的下标,否则返回-1

2.arr.includes(valueToFind[, fromIndex])


  1. 此方法判断数组中是否存在某个值,如果存在返回true,否则返回false
  2. 参数 
  3. valueToFind 需要查找的元素值。
  4. fromIndex 可选 从fromIndex 索引处开始查找 valueToFind。
  5. 如果为负值,则按升序从 array.length + fromIndex 的索引开始搜
  6. (即使从末尾开始往前跳 fromIndex 的绝对值个索引,然后往后搜寻)。默认为 0
  1. var arr = [1,2,3,4];
  2. if(arr.includes(3)){
  3. console.log('存在')
  4. }else{
  5. console.log('不存在')
  6. }

3.arr.find(callback[, thisArg])

  1. 返回数组中满足条件的第一个元素的值,如果没有,返回undefined
  2. 参数
  3. callback(element,index,array) 可传入三个值
  4. element 当前遍历到的元素;index可选 当前遍历到的索引;array可选 数组本身;
  5. thisArg可选 执行回调时用作this 的对象。
  1. var arr = [1,2,3,4,78];
  2. var result = arr.find(item=>{
  3. return item > 3;
  4. })
  5. console.log(result);//4

4.arr.findIndex(callback[, thisArg])

  1. findIndex()方法返回数组中满足条件的第一个元素的下标。否则返回-1
  2. 参数
  3. callback()针对数组中的每个元素, 都会执行该回调函数, 执行时会自动传入下面三个参数:
  4. element当前元素。
  5. index 当前元素的索引
  6. array 调用findIndex的数组。
  7. thisArg 可选。执行callback时作为this对象的值.
  1. var arr = [1,2,3,4];
  2. var result = arr.findIndex(item=>{
  3. return item > 3
  4. });
  5. console.log(result)//3

三、JS中flat----数组扁平化

  1. 需求:多维数组=》一维数组
  2. let arr = [1, [2, [3, [4, 5]]], 6];// -> [1, 2, 3, 4, 5, 6]
  3. let str = JSON.stringify(arr);

1. 调用ES6中的flat方法

  1. flat() 方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
  2. var newArray = arr.flat([depth])
  3. 参数
  4. depth 可选
  5. 指定要提取嵌套数组的结构深度,默认值为 1
  6. 返回值
  7. 一个包含将数组与子数组中所有元素的新数组。
  8. arr = arr.flat(Infinity);

2. replace + split

  1. replace() 方法返回一个由替换值(replacement)替换一些或所有匹配的模式(pattern)后的新字符串。
  2. 模式可以是一个字符串或者一个正则表达式,替换值可以是一个字符串或者一个每次匹配都要调用的回调函数。
  3. 原字符串不会改变。
  4. 语法:str.replace(regexp|substr, newSubStr|function)
  5. 参数:
  6. regexp (pattern)
  7. 一个RegExp 对象或者其字面量。该正则所匹配的内容会被第二个参数的返回值替换掉。
  8. substr (pattern)
  9. 一个将被 newSubStr 替换的 字符串。其被视为一整个字符串,而不是一个正则表达式。仅第一个匹配
  10. 项会被替换
  11. newSubStr (replacement)
  12. 用于替换掉第一个参数在原字符串中的匹配部分的字符串。该字符串中可以内插一些特殊的变量名。
  13. 参考下面的使用字符串作为参数。
  14. function (replacement)
  15. 一个用来创建新子字符串的函数,该函数的返回值将替换掉第一个参数匹配到的结果。
  16. 参考下面的指定一个函数作为参数。
  17. 返回值
  18. 一个部分或全部匹配由替代模式所取代的新的字符串。
  19. arr = str.replace(/(\[|\])/g, '').split(',')

3. replace + JSON.parse

  1. str = str.replace(/(\[|\])/g, '');
  2. str = '[' + str + ']';
  3. ary = JSON.parse(str);

4. 普通递归

  1. let result = [];
  2. let fn = function(ary) {
  3. for(let i = 0; i < ary.length; i++) {
  4. let item = arr[i];
  5. if (Array.isArray(arr[i])){
  6. fn(item);
  7. } else {
  8. result.push(item);
  9. }
  10. }
  11. }

5. 利用reduce函数迭代

reduce() 方法对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值
  1. function flatten(arr) {
  2. return arr.reduce((pre, cur) => {
  3. return pre.concat(Array.isArray(cur) ? flatten(cur) : cur);
  4. }, []);
  5. }
  6. let arr = [1, 2, [3, 4], [5, [6, 7]]]
  7. console.log(flatten(arr))

6:扩展运算符

  1. //只要有一个元素有数组,那么循环继续
  2. while (ary.some(Array.isArray)) {
  3. ary = [].concat(...ary);
  4. }

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/212231
推荐阅读
相关标签
  

闽ICP备14008679号