数组

作者: 真的吗_a951 | 来源:发表于2018-06-26 10:43 被阅读0次

1. 基本使用
-允许直接给后面添加值
arr[100] = 10

  • 允许中间没有值,为undefined
  • 通过下标访问到没有值的返回undefined
  • arr.length = 0清空数组
  • arr[arr.length-1] 获取到最后一位的值
  • arr.push('cjj') 添加到最后
  • arr.pop() 删除最后一位
  • arr.unshift('xcc') 在数组第一位新增
  • arr.shift() 移除第一位
    -arr.splice(a,b,c) 删除(a是从第几位开始,b是替换几位,c是替换成什么)
var arr = [1,2,5,6,9];
arr.splice(2,0,3,4)  //{1,2,3,4,5,6,9}

♡ 不进行替换只添加(b是0)的时候,是添加在a前面

  • arr.slice(a,b)获取出来一个数组,原数组不变,从第a位开始,到第b位前结束(就是不包含b)

  • arr.join(' ')把数组转换成字符串,可以在字符串中间添加符号

  • arr.split('')把字符串转换成数组,在每个字符间添加,

  • arr.reverse()倒序,数组本身发生了变化

//字符串倒序输出
function  sortString(str){
    str = str.split("")
    str = str.reverse()
    str = str.join('')
    return str
}
var str = 'jirenguhungervalley'
var str2 = sortString(str)
console.log(str2) // 'yellavregnuhugnerij'

2. 使用

  • arr[++i]下标可以是一个非负整数的变量或表达式
  • concat(array)用于拼接数组,返回一个新数组,原数组不变a.concat(b)
  • a.sort() 按照数字的第一位排序
var a=[1,2,10,200,3]
a.sort() //[1,10,2,200,3]

若要按照数值大小排序

a.sort(function (v1,v2){
    return v1-v2
}) //[1,2,3,10,200]

v1和v2比较,如果前一位减后一位大于0,就调换位置,小于0,就不管
按照对象里面的某个值来排序
① 按照数字大小

var users = [
  { name: "John", age: 20, company: "Baidu" },
  { name: "Pete", age: 18, company: "Alibaba" },
  { name: "Ann", age: 19, company: "Tecent" }
]
 user.sort(function(){
     return v1.age - v2.age
})
//0:{name: "Pete", age: 18, company: "Alibaba"}
//1:{name: "Ann", age: 19, company: "Tecent"}
//2:{name: "John", age: 20, company: "Baidu"}

②按字符串排序
return v1.name > v2.name字符串用大于表示

ES5 数组拓展
Array.isArray(obj)判断对象是不是一个数组
arr.indexOf(element) 看数组是否有element这个元素,并且会返回位置,从前往后找。lastIndexOf(element)从后往前找
★ 遍历数组
arr.forEach(element,index)参数可以是函数

var arr = [1,3,5,6,7]
arr.forEach(function(value,index){
    console.log(' '+value+value) //输出一个字符串加数组里的值,结果就是一个字符串
}) //遍历数组,函数里第一个参数是值,第二个是索引值, 输出[11,33,55,66,77]

.every(function(){})逻辑判断,返回布尔值

var arr = [1,-2,3,-5]
arr.every(function(val){
  return val > 0 ? true:false
})  //false
  • .every所有函数的每个回调函数都是返回true的时候才会返回true,遇到false终止执行,返回false。
  • .some有一个回调函数返回true时终止执行并返回true,否则返回false

.map(function(element){})遍历数组,与forEcah类似,回调函数返回值组成一个新数组返回,新数组索引结构和原数组一致,原数组不变。

var arr = [1,2,3,4,5,6,9]
var arr2 = arr.map(function(val){
    return val*val
})
//arr [1, 2, 3, 4, 5, 6, 9]
//arr2 [1, 4, 9, 16, 25, 36, 81]

.filter(function(element))过滤

var arr = [1,2,3,4,5,6]
console.log(arr.filter(function(val){ //回调函数判断是不是返回true,是的话输出
  return val%2==0 //条件:对2取余等于0
}))  //满足条件返回值 [2,3,6]

reduce(function(v1,v2){},value)遍历数组,调用回调函数,讲数组元素合成一个值,reduce从索引最小值开始,reduceRight反向。value是可选的,表示初始值。
回调函数:把两个值合为一个,返回结果

var arr = [3,4,5]
arr.reduce(function(v1,v2){
    return v1+v2  //(3+4)+5  12
})

步骤实现

function reduce(arr,fn){
    var arr2 = arr;
    while(arr2.length > 1){
        console.log(arr2)
        arr2.splice(0,2,fn(arr2[0],arr2[1]))
    }
        return (arr2[0])
}
var arr = [3,4,5,6]
var result = reduce(arr,function(v1,v2){
  return v1 + v2
})
console.log(result)
结果

假如有初始值

function reduce(arr,fn,initValue){
    var arr2 = arr.concat([]);//合成两个数组(其中一个为空),变成一个新数组arr2,与arr无关
    if(initValue !== undefined){ //判断有没有初始值
        arr2.unshift(initValue) //把初始值添加到第一位
    }
    while(arr2.length > 1){
        console.log(arr2)
        arr2.splice(0,2,fn(arr2[0],arr2[1]))
    }
        return (arr2[0])
}
var arr = [3,4,5,6]
var result = reduce(arr,function(v1,v2){
  return v1 + v2
},10)
console.log(result)

将嵌套多层的数组,转换为只有一层的数组
方法①

var arr = [3,['4,5',7,[1]],[2,10]]

function flat(arr){
  var arr2 = [] //新建一个新数组
  arr.forEach(function(val){
    if(Array.isArray(val)){ //判断val是不是一个数组
      arr2 = arr2.concat(flat(val))//如果是数组,这个数组里面再flat一次,取到里面的值,再跟arr2合并
    }else{
      arr2.push(val) //如果不是数组,直接添加到arr2里面
    }
  })
  return arr2 //遍历完后返回arr2
}
var arr2 = flat(arr)
console.log(arr2)

方法②

function flatten2(arr){
    return arr.reduce(function(initArr,currentArr){
  return initArr.concat(Array.isArray(currentArr)?flatten2(currentArr):currentArr)
  },[]) 
}





相关文章

  • 数组

    数组数组数组数组数组数组数组数组数组

  • JavaScript - 5.数组<增删改查>

    数组 Array 数组 - 增 数组 - 删 / 改 数组 - 查 数组 - 自动 toString() 数组 -...

  • PHP数组使用

    数组定义 数组增、删、改 数组查询 数组排序 数组合并、分割 数组比较、去重复 数组长度 数组遍历 数组转换 其他...

  • 》》》PHP初入---(三)

    数组定义 1.索引数组:数组下标是整型的 声明数组: 访问数组: count(数组)--获取数组长度 查看数组所有...

  • JavaScript中数组的常用操作

    数组的遍历 数组的映射 数组的简化 数组的连接 获取数组的片段 数组的拷贝 查找数组 数组去重

  • JavaSE之数组

    六、数组 目录:数组概述、数组声明创建、数组使用、多维数组、Array类、稀疏数组 1.什么是数组 数组的定义:数...

  • Shell数组、关联数组

    数组 定义数组 获取数组 关联数组 定义关联数组 获取关联数组

  • 学习Java第五天

    数组是多个数据的集合 数组的语法 数组元素类型【】 数组名; 多维数组: 数组元素类型【】【】 数组名; 多维数组...

  • php基础精粹

    PHP php数组 php数组之索引数组初始化 PHP数组之索引数组赋值 PHP数组之访问索引数组内容 PHP数组...

  • C语言的惯用集

    数组部分 数组部分 清空数组a 把数据读进数组a 对数组a求和

网友评论

      本文标题:数组

      本文链接:https://www.haomeiwen.com/subject/fjeeyftx.html