// concat合并 数组 var array1 = ["S60", "S70"]; var array2 = ["XC40", "XC50", "XC60"]; var array3 = ["t140", "t250", "Xt360"]; // 把数组 3个数组 合并在一起 // (方法不会更改现有数组,而是返回一个新数组) let newArray = array1.concat(array2,array3) console.log('@newArray===',newArray);
// copyWithin() 方法将数组元素复制到数组中的另一个位置,覆盖现有值 const fruits = ["Banana", "Orange", "Apple", "Mango"]; // 第一个参数是 要改变的值的索引 // 第二个参数 是目标值 let newArray = fruits.copyWithin(0,3) // 以第四个值为目标 把 数组中的 第一个值改为目标 console.log('@newArray===',newArray);
// entries() 方法返回带有键/值对的 Array Iterator 对象 const fruits = ["Banana", "Orange", "Apple", "Mango"]; const arr2 = [{ a: 1 }, { b: 2 }, { c: 3 }]; let newArray = Object.entries(fruits) console.log('@arr2',Object.entries(arr2)) // [['0', { a: 1 }], ['1', { b: 2 }], ['2', { c: 3 }]] console.log('@newArray===',newArray); // [['0', 'Banana'], ['1', 'Orange'], ['2', 'Apple'],['3', 'Mango']]
true
const ages = [32, 33, 16, 40]; // 数组 中的 所有item > 15 就返回 true 有一个不符合 就是 false let flag = ages.every(item => item > 15) console.log('@flag===',flag);
const fruits = ["Banana", "Orange", "Apple", "Mango"]; // 从 0 开始 到 1 结束 fruits.fill("Kiw",0,1); // 把数组中的第一个 用 Kiw 代替 console.log('@fruits',fruits);
var ages = [32, 33, 16, 40]; let newArr = ages.filter(item =>{ return item >= 18 // 过滤的条件 }) console.log('@',newArr);
// 方法返回数组中第一个通过测试的元素的值 // 如果找到函数返回 true 值的数组元素,则 find() 返回该数组元素的值(并且不检查剩余值) // 没有找到 就 返回 undefined var ages = [3, 10, 18, 20]; let val = ages.find(item =>{ return item > 3 }) console.log(val);
索引值
var ages = [3, 10, 18, 20]; let val = ages.findIndex(item =>{ return item > 3 }) console.log('@索引值',val);
let arr =[1,2,3,4,5,6] arr.forEach((value, key) => { // 回调函数中直接修改arr的值 return arr[key] = value * value; }); console.log('@arr',arr) // [1,4,9,16,25,36]
// 1.从 String 生成数组 let arr1 = Array.from('foo'); console.log('@arr1',arr1); // [ "f", "o", "o" ] // 2.从 Set 生成数组 let arr2 = Array.from(['foo', 'bar', 'baz', 'foo']) console.log('@arr2',arr2); // ['foo', 'bar', 'baz', 'foo'] // 3.从 Map 生成数组 let arr3 = Array.from([[1, 2], [2, 4], [4, 8]]) console.log('@arr3',arr3); // [[1, 2], [2, 4], [4, 8]] // 4.从map 生成数组 let arr4 = new Map([['1', 'a'], ['2', 'b']]) console.log(Array.from(arr4.values())); // 获取 数组中的 value值(数组item 中 的 第二项的值) ['a', 'b'] console.log(Array.from(arr4.keys())); // 获取 数组中的 key值(数组item 中 的 第一项的值) ['1', '2'] // 5.从类数组对象(arguments)生成数组 function f() { return Array.from(arguments); } console.log('@类数组对象',f(1, 2, 3)); // [1, 2, 3] // 6.在 Array.from 中使用箭头函数 let arr6 = Array.from([1,2,3],x => x + x) // 每一项 加本身 console.log('@arr6',arr6); // [2, 4, 6] let arr7 = Array.from({length:5},(v,i) => i) // i 是 长度为5的索引值 console.log('@arr7',arr7); // [0, 1, 2, 3, 4] // 7.序列生成器 (指定范围) const range = (start, stop, step) => Array.from( { length: (stop - start) / step + 1}, (_,i) => start + (i * step) ); range(0, 4, 1); // 生成 0-4 的序列 每一步 加一 console.log('@range',range(0, 4, 1)); // [0, 1, 2, 3, 4] let zimu = range('A'.charCodeAt(0), 'Z'.charCodeAt(0), 1).map(x => String.fromCharCode(x)); console.log('@zimu',zimu); // 生成 26 个字母 // 8.数组去重合并 function combine(){ let arr = [].concat.apply([],arguments) // 没有去重的新数组 return Array.from(new Set(arr)) // 返回去重后的数组 (Array.from() 是合并) } var m = [1,2,3,2], n = [2,3,3,4] console.log('@去重后的数组并且合并',combine(m,n)); // 9.用set 实现数组去重 let array = [1,1,1,4,5,6,3] console.log('@set去重',[...new Set(array)]); // [1, 4, 5, 6, 3] // 10. 用 map 来实现数组分组 let arr10 = [ {id:1,groupCode:1,name:'test01'}, {id:2,groupCode:1,name:'test02'}, {id:3,groupCode:2,name:'test03'}, {id:4,groupCode:3,name:'test04'}, {id:5,groupCode:3,name:'test05'}, {id:6,groupCode:5,name:'test06'}, ] function groupFn(arr){ let map = {} arr.map((item) =>{ if(!map[item.groupCode]){ // key值 不一样 重新创建一个 array map[item.groupCode] = [item] }else { map[item.groupCode].push(item) // key 值一样 就 push 进当前 item.groupCode } }) console.log('@map',map); // 对象中包着的那几个数组 let resData = []; Object.keys(map).forEach((key) => { console.log('@key',key); resData.push({ groupCode: key, data: map[key], }); }); console.log('@resData',resData); // 0: {groupCode: '1', data: Array(2)} // 1: {groupCode: '2', data: Array(1)} // 2: {groupCode: '3', data: Array(2)} // 3: {groupCode: '5', data: Array(1)} } groupFn(arr10)
方法确定数组是否包含指定的元素。
arr 是 区域 (’ a ')a 是目标值
在 arr 中寻找 目标 是 ‘a’ 的 选项,如果找到了 返回 true
参数1: 目标值 , 参数2: 从 数组中 的 哪个索引值
开始寻找
const arr = ['小明', 'a', 'b', 'c'] arr.includes('a')//true arr.includes('小明')//true arr.includes('a', 1)//true arr.includes('a', 2)//false 此时a的下标是1,从2开始查找往后就没有a这个值所以返回false arr.includes('小明', 1)//false arr.includes('a', -1)//true index传入负数则会查找整个数组 arr.includes('a', 100)//true index传入大于数组长度的数值直接返回false
索引值
,没有找到 返回 -1const arr = ['小明', 'a', 'b', 'c'] arr.indexOf('b')//2 arr.indexOf('小美')//-1 arr.indexOf('小明')//0 arr.indexOf('a', 1)//1 arr.indexOf('小明', 2)//-1 此时小明的下标是0,从2开始查找往后就没有小明这个值所以返回-1 arr.indexOf('小明', 0)//0 arr.indexOf('c', -1)//3 index传入负数则会查找整个数组 arr.indexOf('a', 100)//true index传入大于数组长度的数值直接返回false //也可以匹配字符串 const value="青少年都是祖国的花朵!" value.indexOf('花朵')//8 记录第一个字符出现的位置 value.indexOf('鸟')//-1 value.indexOf('都是')//3
// Array.isArray用于检测一个对象是否为数组 let arr1 = Array.isArray([]) // true let arr2 = Array.isArray([1]) // true let arr3 = Array.isArray(new Array()) // true let arr4 = Array.isArray() // false let arr5 = Array.isArray({}) // false let arr6 = Array.isArray(null) // false let arr7 = Array.isArray(undefined) // false let arr8 = Array.isArray(17) // false let arr9 = Array.isArray('Array') // false console.log(arr1);
var fruits = ["Banana", "Orange", "Apple", "Mango"]; console.log(fruits.join()); // Banana,Orange,Apple,Mango
key
值const object1 = { a: 'somestring', b: 42, c: false }; console.log('@@@',Object.keys(object1)); // ['a', 'b', 'c']
var str = 'xxaxxaxxax'; var endA2 = str.lastIndexOf('a',7) //查找的是字符串前7位之内的最后一个a console.log(endA2);
let arr =[1,2,3,4,5,6] let list = arr.map(value => { return value * value; }); console.log('@list',list)
// 方法移除数组的最后一个元素,并返回该元素。 const fruits = ["Banana", "Orange", "Apple", "Mango"]; let arr = fruits.pop() console.log('@arr',arr); // 返回当前删除的元素 Mango console.log('@fruits11111',fruits); // 删除后的数组 ['Banana', 'Orange', 'Apple']
const fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.push('张三') console.log('@fruits',fruits); // ['Banana', 'Orange', 'Apple', 'Mango', '张三']
//如下0就是传入的一个初始值 // prevalue 是 初始值 // item 是 数组中的 每一项 //在回调函数中,可以接受四个参数,第一个参数第一次的值为传入的初始值即0, //之后每次循环的值为每次return的值 var test = [1, 2, 3, 4, 5]; var total = 0; total = test.reduce((prevalue, item) => { return item + prevalue; }, 0); console.log(total); //输出结果为15
var arr = [0,1,2,3,4]; arr.reduceRight(function (preValue,curValue,index,array) { return preValue + curValue; }); // 10
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.shift() console.log('@fruits',fruits); // ['Orange', 'Apple', 'Mango']
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"]; var citrus = fruits.slice(1, 3); // 截取 数组 索引 从 1 到 3 的数据 console.log('@citrus',citrus); // ['Orange', 'Lemon']
var ages = [3, 10, 18, 20]; let flag = ages.some(item =>{ return item > 18 }) console.log('@flag',flag); // 只有有一个 符合条件就返回 true
// 1.不传参数,将不会按照数值大小排序,按照字符编码的顺序进行排序; var arr = ['General','Tom','Bob','John','Army']; var resArr = arr.sort(); console.log(resArr);//输出 ["Army", "Bob", "General", "John", "Tom"] var arr2 = [30,10,111,35,1899,50,45]; var resArr2 = arr2.sort(); // 按数组的第一位排序 console.log(resArr2);//输出 [10, 111, 1899, 30, 35, 45, 50] // 2.传入参数,实现升序,降序; var arr3 = [30,10,111,35,1899,50,45]; arr3.sort(function(a,b){ return a - b; // 升序 }) console.log(arr3);//输出 [10, 30, 35, 45, 50, 111, 1899] var arr4 = [30,10,111,35,1899,50,45]; arr4.sort(function(a,b){ return b - a; // 降序 }) console.log(arr4);//输出 [1899, 111, 50, 45, 35, 30, 10] // 3.根据数组中的对象的某个属性值排序; var arr5 = [{id:10},{id:5},{id:6},{id:9},{id:2},{id:3}]; arr5.sort(function(a,b){ return a.id - b.id }) console.log(arr5); // 按照 对象的 id 安排返回一个 数组对象 // 4.根据数组中的对象的多个属性值排序,多条件排序; var arr6 = [{id:10,age:2},{id:5,age:4},{id:6,age:10},{id:9,age:6},{id:2,age:8},{id:10,age:9}]; arr6.sort(function(a,b){ if(a.id === b.id){//如果id相同,按照age的降序 return b.age - a.age // 年龄大的在前面(b-a 从大到小) }else{ return a.id - b.id } })
// 1.删除功能 var arr = ["aa","bb","cc","dd"]; //首先我们var一个数组 var arr1 = arr.splice(0,3); //然后我们去用splice的删除功能选取下标从0到3的内容,也就是前三个内容 console.log(arr1); //["aa","bb","cc"] 打印出我们选中的内容 console.log(arr); //["dd"] 打印出了截取完之后剩下的内容 // 2. 插入功能 var arr = ["aa","bb","cc","dd"]; //先给个数组 var arr1 = arr.splice(1,0,"ff","pp"); //然后我们在下标为1,1之后的有0个删除的,然后去插入"ff"和"pp" console.log(arr1); // [] //然后打印我们要插入的内容,它里边什么都没,然后我们去打印arr数组看看是不是已经插入进去了 console.log(arr); //["aa","ff","pp","bb","cc","dd"] 已经实现了 // 3.替换功能 var arr = ["aa","bb","cc","dd"]; //给一个数组 var arr1 = arr.splice(1,2,"ff","pp"); //我们把下标为1,1后面的两个内容(包括1)截取删除然后替换成"ff","pp" console.log(arr1); //["bb","cc"] //打印出我们截取出来的内容 console.log(arr); //["aa", "ff", "pp", "dd"] //然后打印出我们替换后的数组
var fruits = ["Banana", "Orange", "Apple", "Mango"]; var x = fruits.toString(); console.log('@',x); // 数组转化为字符串
var fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.unshift('99'); console.log('@',fruits); // ['99', 'Banana', 'Orange', 'Apple', 'Mango']
// 数组类型 var arr = [1,2,3] console.log(arr.valueOf()); // [1, 2, 3] console.log(typeof arr.valueOf()); // object console.log(arr.valueOf() instanceof Array); // true console.log(arr.toString()); // 1,2,3 console.log(typeof arr.toString()); // string // 原始对象 var obj ={ a:1 } console.log('==========='); console.log(obj.valueOf()); // {a: 1} console.log(typeof obj.valueOf()); // object console.log(obj.valueOf() instanceof Object); // true console.log(obj.toString()); // [object Object] console.log(typeof obj.toString()); // string // 日期类型 var date = new Date() console.log('============'); // 1647750741630 console.log(date.valueOf()); // number console.log(typeof date.valueOf()); // Sun Mar 20 2022 12:32:21 GMT+0800 (GMT+08:00) console.log(date.toString()); // string // 正则 var reg = new RegExp(/\d/) console.log('============='); console.log(reg.valueOf()); // /\d/ console.log(typeof reg.valueOf()); // object console.log(reg.toString()); // /\d/ console.log(typeof reg.toString()); // string