数组、对象操作方法
-
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
-
将对象的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", // }, // ];
-
js的every方法:只要有一项不满足条件即返回false
every()方法用于检测数组中的所有元素是否都满足指定条件(该条件为一个函数)。 every()方法会遍历数组的每一项,如果有有一项不满足条件,则表达式返回false,剩余的项将不会再执行检测;如果遍历完数组后,每一项都符合条,则返回true。 every() 不会对空数组进行检测 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
-
some方法:有一项满足都会返回true
if (this.evaluateData.some((val) => val.score== '')) { this.$message({ type: "error", message: "请填写分数,分数不能为空, }); return; }
-
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]
-
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; });
-
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) // 每一项元素 }
-
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);
-
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);
-
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']
-
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"]
-
Object.values() 返回对象的属性值
var data={a:1,b:2,c:9,d:4,e:5}; console.log(Object.values(data)); // [1, 2, 9, 4, 5]
-
Object.entries() 暂时不理解
-
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
-
数组 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日--------------------------------