数组、对象操作方法

  1. indexOf / findIndex根据id查找所在数组的索引

    // indexOf
    var index = nn.map(item => item.a).indexOf(33)
    
    // findIndex
    const arr = [{
          
          id: 'a'}, {
          
          id: 'b'}, {
          
          id: 'c'}];
    const index = arr.findIndex(object => {
          
          
      return object.id === 'b';
    });
    console.log(index); // 1
    
  2. 将对象的key和value转换成数组

    let obj = {
          
          
      哈哈哈: "20",
      调试4000: "20",
    }
    let arr=[]
    for(let i=0;i<Object.keys(obj).length;i++){
          
          
      arr.push({
          
          name:Object.keys(obj)[i],value:obj[Object.keys(obj)[i]]})
    }
    console.log(arr);
    //	数组: [
    //          {
          
          
    //             name: "哈哈哈",
    //             value: "20",
    //           },
    //           {
          
          
    //             name: "调试4000",
    //             value: "20",
    //           },
    //        ];
    
  3. js的every方法:只要有一项不满足条件即返回false

    every()方法用于检测数组中的所有元素是否都满足指定条件(该条件为一个函数)。
    every()方法会遍历数组的每一项,如果有有一项不满足条件,则表达式返回false,剩余的项将不会再执行检测;如果遍历完数组后,每一项都符合条,则返回trueevery() 不会对空数组进行检测
    every() 不会改变原始数组
    
    array.every(function(currentValue,index,arr), thisValue)
    第一个参数为一个回调函数,必传,数组中的每一项都会遍历执行该函数。
    	currentValue:必传,当前项的值
    	index:选传,当前项的索引值
    	arr:选传,当前项所属的数组对象
    第二个参数thisValue为可选参数,回调函数中的this会指向该参数对象。
    
    例子:
    	var arr = [1000, 2000, 3000]
    	var flag = arr.every(function (curVal, index, arr) {
          
          
    	console.log(curVal + "===" + index + "====" + arr) //1000===0====1000,2000,3000
    		return curVal > 2000;//数组中的每个元素的值都要大于2000的情况,最后才返回true
    	})
    	console.log(flag)   //false
    
  4. some方法:有一项满足都会返回true

    if (this.evaluateData.some((val) => val.score== '')) {
          
          
    this.$message({
          
          
    	type: "error",
     	message: "请填写分数,分数不能为空,
    });
    return;
    }	
    
  5. js中的filter过滤出符合条件的元素组成新数组

    过滤器函数,用于把Array的某些元素过滤掉,然后返回符合条件的元素。
    array.filter(function(currentValue,index,arr), thisValue)
    第一个参数function(currentValue, index,arr):必须,是一个函数,数组中的每个元素都会执行这个函数。且如果返回值为 true,则该元素被保留;
    	currentValue :必须,当前元素的值。
    	index:可选,当前元素的索引值。
    	arr :可选,当前元素属于的数组对象。
    第二个参数thisValue:可选。代表当前元素的值。
    返回过滤元素后的新数组
    filter()不会对空数组进行检测、不会改变原始数组
    
    例子:
    let nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    let res = nums.filter((num) => {
          
          
    	return num > 5;
    });
    console.log(res);  // [6, 7, 8, 9, 10]
    
  6. forEach/map给数组中的每个对象新增一个属性

    // 直接修改原数组
    var oldArray = [{
          
          
      name: 'a',
      age: 1
    }, {
          
          
      name: 'b',
      age: 2
    }, {
          
          
      name: 'c',
      age: 3
    }];
    oldArray.forEach(item => {
          
          
      item.key = 'value';
    });
    
    // 生成新数组,也会改变原数组
    var oldArray = [{
          
          
      name: 'a',
      age: 1
    }, {
          
          
      name: 'b',
      age: 2
    }, {
          
          
      name: 'c',
      age: 3
    }];
    let newArray = oldArray.map(item => {
          
          
      item.key = 'value';
      return item;
    });
    
  7. js循环遍历数组

    // for 循环:可以使用break退出循环
    for (let index=0; index < arr.length; index++) {
          
          
    	// console.log('index', index, arr[index])
    }
    
    // forEach:无法在循环体中使用await;不能提前退出循环
    arr.forEach((item, index) => {
          
          
    	console.log(index, arr[index])
    })
    
    // for-in
    for (const index in arr) {
          
          
    	console.log(index, arr[index])
    }
    
    // for-of
    for (const item of arr) {
          
          
    	console.log(item) // 每一项元素
    }
    
  8. js生成数组的方法

    // for循环:生成0-99的数组
    var arr1 = new Array(100);
    for(var i=0;i<arr1.length;i++){
          
          
      arr1[i] = i;
    }
    console.log(arr1);
    
    // push
    var arr2 = new Array();
    for(var i=0;i<100;i++){
          
          
      arr2.push(i);
    }
    console.log(arr2);
    
    // while
    var arr3 = new Array();
    var i = 0;
    while(i<100){
          
          
      arr3.push(i);
      i++;
    }
    console.log(arr3);
    
    // do-while
    var arr4 = new Array();
    var i = 0;
    do{
          
          
      arr4.push(i);
      i++;
    }
    while(i<100)
    console.log(arr4);
    
    // Array.from
    var arr6 = Array.from({
          
          length:100}, (v, k) => k);
    console.log(arr6);
    
  9. js生成数组中是对象的格式

    // for
    initElement() {
          
          
          let imgArr = new Array(5)
          let imgObj = new Object()
          for (let i=0; i<imgArr.length; i++) {
          
          
            imgObj.bannerCode = '' // banner值
            imgObj.bannerSourceCode = '' // banner值来源:例如分类:可以传入一级分类编码
            imgObj.bannerType = '' // banner类型1:分类,2:专题,3:指定Url
            imgObj.bannerUrl = '' // banner图片地址
            imgObj.id = '' // 主键id 编辑需要
            imgArr[i] = imgObj
          }
          this.$set(this.addParam, 'bannerReqList', imgArr)
        },
     // Array.from
     var arr6 = Array.from({
          
          length:5}, (item) => (item = {
          
          a: '', b:''}));
     console.log(arr6);
    
  10. Array.from ()创建数组;对数组的每一项做处理;字符串转数组

    // 一、Array.from (obj, mapFn)
    // obj指的是数组对象、类似数组对象或者是set对象,map指的是对数组中的元素进行处理的方法。
    //将数组中布尔值为false的成员指为0
    Array.from([1, ,2,3,3], x => x || 0) //[1,0,2,3,3]
     
    //将一个类似数组的对象转为一个数组,并在原来的基础上乘以2倍
    let arrayLike = {
          
           '0': '2', '1': '4', '2': '5', length: 3 }
    Array.from(arrayLike, x => x*2) //[4,8,10]
     
    //将一个set对象转为数组,并在原来的基础上乘以2倍
    Array.from(new Set([1,2,3,4]), x => x*2) //[2,4,6,8]
    
    
    // 二、Array.from ({length:n}, Fn)
    // 第一个参数指定了第二个参数执行的次数。可以将各种值转化为真正的数组。
    Array.from({
          
          length:3}, () => 'jack') //["jack", "jack", "jack"]
    
    Array.from({
          
          length:3}, item => (item = {
          
          'name':'shao','age':18})) //[{'name':'shao','age':18}, {'name':'shao','age':18}, {'name':'shao','age':18}]
     
    Array.from({
          
          length: 2}, (v, i) => item = {
          
          index:i});//生成一个index从0到4的数组对象[{index: 0},{index: 1}]
    
    
    // 三、Array.from(string)
    // 接收一个字符串
    Array.from('abc') //['a','b','c']
    
    
  11. Object.keys()

    // 遍历
    // 一、传入对象,返回属性名
    var data={
          
          a:1,b:2,c:9,d:4,e:5};
    console.log(Object.keys(data));//["a", "b", "c", "d", "e"]
    Object.keys(data).map((key,item)=>{
          
          
        console.log(key,data[key]);//key=>属性名    data[key]=>属性值
    });
    
    // 二、传入字符串,返回索引
    var str = 'ab1234';
    console.log(Object.keys(obj));  //[0,1,2,3,4,5]
    
    // 三、传入数组,返回索引
    var arr = ["a", "b", "c"];
    console.log(Object.keys(arr)); // console: ["0", "1", "2"]
    
    // 四、构造函数 返回空数组或者属性名
    function Pasta(name, age, gender) {
          
          
          this.name = name;
          this.age = age;
          this.gender = gender;
          this.toString = function () {
          
          
                return (this.name + ", " + this.age + ", " + this.gender);
        }
    }
    
    console.log(Object.keys(Pasta)); //console: []
    
    var spaghetti = new Pasta("Tom", 20, "male");
    console.log(Object.keys(spaghetti)); //console: ["name", "age", "gender", "toString"]
    
  12. Object.values() 返回对象的属性值

    var data={
          
          a:1,b:2,c:9,d:4,e:5};
    console.log(Object.values(data)); // [1, 2, 9, 4, 5]
    
  13. Object.entries() 暂时不理解

  14. filter + includes取两个数组的交集

    var arr1=[1,2,3,4,5,6,"a","b"]
    var arr2=['a','b',1,2]
    var arr3=arr1.filter(item=>{
          
          
        return arr2.includes(item)
    })
    console.log(arr3);//[ 1, 2, 'a', 'b' ]
    //filter()数组的过滤方法,会返回满足条件的元素组成一个新数组
    //includes()方法如果在数组中查到该元素则返回true否则返回false
    
  15. 数组 splice删除某个元素

    // splice() 删除数组中的指定元素
    // 第一个参数表示开始位置的索引,
    // 第二个参数表示删除的数量,
    // 第三个参数以后的参数是从删除开始的位置后面新增的元素
    let arr = [1, 2, 3, 4, 5, 6]
    arr.aplice(1, 2)
    console.log(arr) // [1, 4, 5, 6]
    arr.splice(1, 2, 8)
    console.log(arr) // [1, 8, 4, 5, 6]
    

--------------------------------更新至23年1月16日--------------------------------

猜你喜欢

转载自blog.csdn.net/guairena/article/details/128666893