javascript 一02数组

数组

创建一个数组

var arry = [];
var arry = ['数据1','数据2','数据3','数据4','数据5']
// -------
var arry = new Array()
var arry = new Array(1,2,3,4)
// -------
//判断是否是数组 
console.log(Array.isArray(arry))

数组的添加

var arr = [1,2,3,4]
// 在末尾添加一个新的元素,
arr[arr.lenght] = 5
// 或者 push
arr.push(6,7) 
// 在首位添加一个新元素 
arr.unshift(-1)

数组的删除

arr.pop();
//删除数组中的第一值 
arr.shift();
// 根据下标进行删除
arr.splice(5,3)
//索引为5后的三个元素删除 
arr.splice(5,0 ,2,3,4)
从索引5插入元素,2,3,4。0代表插入,splice(数组的角标,删除长度,.... 添加的元素 )

字符串与数组的相互转化

split

    var text = "如果每小时说一句情话令我词穷大概需要大概317年";
    var words = text.split("");
    for (var i = 0; i < words.length; ++i) {
      console.log(i + words[i]);
    }

join() toString()

 var names = ["David", "Cynthia", "Raymond", "Clayton", "Mike", "Jennifer"];
 var namestr = names.join();
 console.log(namestr);
// name.toString();

浅拷贝AD深拷贝

浅拷贝并没有将一个数组的指向改变,当numer[0] 栈内存改变后,numbers [0]因为指向没有改变,所以numbers [0]的值也会变。

    var numer = [];
    for (var i = 0; i < 10; i++) {
      numer[i] = i + 1;
    }
    var numbers = numer;
    numer[0] = 400;
    console.log(numbers[0]);

深拷贝可以使用copy方法来复制一个数组

function copy(arry1,arry2){
 for(var i = 0; i<arry1.lenght;i++){
  arr2[i] = arr1[i]; 
 }
}

var numer = [];
    for (var i = 0; i < 10; i++) {
      numer[i] = i + 1;
    }
var numbers = [];
    copy(numer, numbers);
    numer[0] = 400;
    console.log(numbers[0]);

数组合并

var arryData1 = [1,2,3,4]
var arryData2 = [5,6,7,8]
var data = arryData1.concat(arryData2)

数组的迭代

var number = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
var isEver = function (x){
  // 如果值为2的倍数就返回true
  console.log(x)
  //否则就返回false 
  return (x % 2 == 0) 
}
//every方法会迭代数组中的每个元素,直到返回false
// number.every(isEver)
// some 方法会将数组中的每一个元素都进行一次迭代。直到函数返回true:
// number.some(isEver);

如果是要进行将所有项进行输出,我们需要循环,或者forEach

numbers.forEach(function(x){
console.log((x % 2 == 0));
});
//方法一
var myMap = numbers.map(isEven);  
// 方法二
var evenNumbers = numbers.filter(isEven); 

map方法会将数组中的没有一个元素都给定一个新的元素数组,
filter对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组

排序

var arry = [1,2,3,4,5,6,7,8,9]
 // 反序输出数组
 arry.reverse()
 sort() 方法用于对数组的元素进行排序
 var arry= [1,2,3,4,5,6,7,11,15]
 console.log(arry.sort()) //[1, 11, 15, 2, 3, 4, 5, 6, 7]

sort() 是按照字符编码的顺序进行排序。首先应把数组的元素都转换成字符串,以便进行比较。
// 我们将创建一个数组,并按字母顺序进行排序:

var arryName = [
'ZhangSan',
'LiSi',
'WangErXiao',
'LiErGou',
GouDan'
];
console.log(arryName.sort()) 
// ["GouDan", "LiErGou", "LiSi", "WangErXiao", "ZhangSan"]

若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。

var arry= [1,22,3,4,51,96,7,11,15]
function compare(a, b) {
  if (a < b) {
    return -1;
  }
  if (a > b) {
    return 1;
  }
// a必须等于
  return 0;
}
arry.sort(compare); //[1, 3, 4, 7, 11, 15, 22, 51, 96]

// 应用,例如我们一个数组里面有张三,李四,王二狗三人的个人信息,现在要按照年龄排序

var arry = [
      { name: "ZhangSan", age: 18 },
      { name: "LiSi", age: 35 },
      { name: "WangErXiao", age: 30 },
    ];
    function compare(a, b) {
      if (a.age < b.age) {
        return -1;
      }
      if (a.age > b.age) {
        return 1;
      }
      // a必须等于
      return 0;
    }
console.log(arry.sort(compare)); 
 // 0: {name: "ZhangSan", age: 18} 1: {name: "WangErXiao", age: 30} 2: {name: "LiSi", age: 35}

搜索

var arry = [1,2,3,4,5,6,7,8,9,10];
var index = arry.indexOf(10);
console.log(index,'返回下角标')

对象数组

posted @ 2020-12-30 10:12  张丑丑呀  阅读(97)  评论(0编辑  收藏  举报