跳至主要內容

数组

Emilia Zhen大约 3 分钟js

数组是一个有序的列表,可以在数组中存放任意的数据,并且数组的长度可以动态的调整。

var arr = ['1', 1, 'xx']
arr[0] = '1'
arr.length = 3

泡沫排序

var numbers = [1, 2, 3, 4, 5]
var count = 0 // 记录循环的次数
// 外层循环:控制趟数,每一趟找到一个最大值
for (var i = 0; i < numbers.length - 1; i++) {
  // 假设数据排好顺序了
  var isSort = true
  count++
  // 内层循环:控制比较的次数,并且判断两个数的大小,把大的数往后移动,小的数往前移动
  for (var j = 0; j < numbers.length - 1 - i; j++) {
    count++
    // 两两比较 从小到大排序
    if (numbers[j] > numbers[j + 1]) {
      // 没有排好
      isSort = false
      // 交换位置
      var tmp = numbers[j]
      numbers[j] = numbers[j + 1]
      numbers[j + 1] = tmp
    }
  }
  // 某一趟结束,判断一下排序是否结束
  // 如何判断排序是否排好,根据是否发生了数据交换,如果发生了数据交换说明没有排好
  if (isSort) {
    // 如果排好顺序
    break
  }
}
console.log(numbers)
console.log(count)

数组方法

清空数组

arr = [] //推荐
arr.length = 0
arr.splice(0, arr.length)

join()方法

将数组转为字符串,并且默认使用逗号','将数组每个元素拼接起来。

arr.join(',') // '2,3,4,5'
arr.join('') // '2345'

filter()方法

过滤数组元素的方法,返回值:过滤后的数组。

var arr = [1500, 1200, 2000, 2100, 1800]
var newArray = arr.filter(function (item) {
  // item 就是数组中的每一个元素
  return item < 2000
})
console.log(newArray)

indexOf()方法

查找数组中元素的位置,找到了返回索引,没找到返回-1,从前往后找,默认从 0 开始找。

// indexOf 的第二个参数 设置 indexOf 查找的开始位置
console.log(arr.indexOf('a', 2))
// 如果没有找到元素 indexOf 会返回-1
var index = -1
do {
  index = arr.indexOf('a', index + 1)
  if (index !== -1) {
    console.log(index)
  }
} while (index !== -1)

字符串对象的常用方法

字符串所有的方法,都不会修改字符串本身(字符串是不可变的),操作完成会返回一个新的字符串

  1. 字符方法
charAt() //获取指定位置处字符
str[0] //HTML5,IE8+支持 和charAt()等效
  1. 字符串操作方法
slice() //从start位置开始,截取到end位置,end取不到
substring() //从start位置开始,截取到end位置,end取不到
substr() //从start位置开始,截取length个字符
  1. 位置方法
indexOf() //返回指定内容在元字符串中的位置
lastIndexOf() //从后往前找,只找第一个匹配的
  1. 去除空白
trim() //只能去除字符串前后的空白
  1. 大小写转换方法
to(Locale)UpperCase()   //转换大写
to(Locale)LowerCase()   //转换小写
  1. 其它
search() // 查找, 功能同indexOf(),但是支持正则表达式
replace() // 替换, 传入指定的字符串和替换后的字符串进行替换
split() // 切割字符串, 根据指定的分隔符进行切割, 返回一个数组