笔记_js_array

数组创建
let arr1 = new Array("hello");
console.log(arr1);

// ------需要注意:Array()括号中只有一个参数时,字符串和数值会代表意义会不一样----------------------//

let arr2 = new Array(5);
console.log("--->" + arr2);
//只是分配了5个单位的内存给arr2 里面并没有值,并不是undefined
// 参考:
// https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array
let arr3 = new Array("enument1", "enument2");
let arr4 = new Array("test1", 99, { key1: "value1" });
let arr5 = [1, 2, 3];
console.log(typeof arr5);
console.log(arr3, arr4,arr5);
splice()
// 在任意的位置给数组添加或删除任意个元素。
let arr1 = [ 'Michael', 'Jordan', 'Kobe', 'Bryant', 'Tracy', 'McGrady' ];
arr1.splice(2,0,"basketball");//第二个参数为0时,是插入
console.log(arr1);

arr1.splice(3,1,"player"); //第二个参数不为0时,是替换
console.log(arr1);
fill()
const array1 = [1, 2, 3, 4];

// fill with 0 from position 2 until position 4
console.log(array1.fill(0, 2, 4));
// expected output: [1, 2, 0, 0]

// fill with 5 from position 1
console.log(array1.fill(5, 1));
// expected output: [1, 5, 5, 5]

console.log(array1.fill(6));
// expected output: [6, 6, 6, 6]
findIndex
const array1 = [5, 12, 8, 130, 44];

const isLargeNumber = (element) => element > 10;

// 返回第一个满足条件的数
const found = array1.find(isLargeNumber);
console.log(found);

// 返回第一个满足条件的数的索引
console.log(array1.findIndex(isLargeNumber));
复制数组
// slice() 抽取当前数组中的一段元素组合成一个新数组。
let arr = ['kobe','bryant'];
console.log(arr.slice());

// copyWithin 浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度。
const array1 = ['a', 'b', 'c', 'd', 'e'];

// copy to index 0 the element at index 3
console.log(array1.copyWithin(0, 3, 4));
// expected output: Array ["d", "b", "c", "d", "e"]

// copy to index 1 all elements from index 3 to the end
console.log(array1.copyWithin(1, 3));
// expected output: Array ["d", "d", "e", "d", "e"]
将数组元素合成一个字符串
let arr = ['kobe','bryant'];
console.log(arr.join(''));
console.log(arr.join(' '));
console.log(arr.join('-'));
/*
kobebryant
kobe bryant
kobe-bryant
*/
some
some() 方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。
// 如果用一个空数组进行测试,在任何情况下它返回的都是false。

const array = [1, 2, 3, 4, 5];
// checks whether an element is even
const even = (element) => element % 2 === 0;
console.log(array.some(even));
// expected output: true

// 具体使用场景?????????
高阶函数
map
/**
 * Array.prototype.map(数组元素,元素索引(可选),原数组本身(可选))
 * 1.会返回一个新数组
 * 2.新数组元素由原数组每个元素执行一次函数后生成
 * callback只在有值的索引上调用,
 * callback不会调用 delete删除的索引或从没被赋过值的索引
 * ps:如果不使用返回的新数组,建议不要用map
 */
//  array.map(callback,[ thisObject]);
// array.map(currentValue,index,array)

let array = [1, 4, 9];
let roots = array.map(Math.sqrt);
let roots2 = array.map((x)=>{
    return Math.sqrt(x)
})
// 以上等价
console.log(roots);
console.log(roots2);
reduce()
/**
 * Array.prototype.reduce()
 * 对数组中的每个元素按序执行一个由您提供的 reducer 函数,
 * 每一次运行 reducer 会将先前元素的计算结果作为参数传入,
 * 最后将其结果汇总为单个返回值
 */

const array1 = [15, 16, 17, 18,19];
const sum = array1.reduce((previousValue, currentValue, currentIndex, array) => {
    return previousValue + currentValue;
})
console.log(sum);
filter()
/**
 * Array.prototype.filter()
 * 测试数组的每个元素的函数。
 * 返回 true 表示该元素通过测试,保留该元素,false 则不保留
 */
 const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
 const result = words.filter(word => word.length > 6);
 console.log(result);
sort
 /**
  * Array.prototype.sort()
  * 默认排序顺序是在将元素转换为字符串,
  * 然后比较它们的 UTF-16 代码单元值序列时构建的
  * 会改变数组元素原来的顺序
  * sort() 方法比较两个值时,将值发送给比较函数,
  * 根据返回的(负、零、正)值对值进行排序
  */

  const arr = [1, 20, 10, 5];
  let compareNumbers= function (a, b) {
      console.log(a,b,a-b)
      return a - b;
  }
  const newArr = arr.sort(compareNumbers);
  console.log('arr :>> ', arr);
  console.log('newArr :>> ',newArr); // [1, 5, 10, 20]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值