freeCodeCamp刷题笔记(六)

目录

 

创建一个具有m行和n列“零”的二维数组

splice()

slice()

使用 for 循环遍历数组中的全部元素

反转字符串

找出多个数组中最大数字

确认结尾

按参数过滤数组

Slice 与 Splice

找出元素在排序后数组中的索引

比较字符串是否存在包含关系

根据size分隔成二维数组


创建一个具有m行和n列“零”的二维数组

function zeroArray(m, n) {
  // 创建一个二维数组,有 m 行 n 列,元素均为 0
  let newArray = new Array;
  let row = new Array;
  for (let i = 0; i < m; i++) {
    // 添加第 m 行到 newArray
    for (let j = 0; j < n; j++) {
      // 将 n 个 0 推入当前行以创建列
      row.push(0);
    }
    // 将当前行(已有 n 个 0)推送到数组
    newArray.push(row);
    row = [];//this
  }
  return newArray;
}

let matrix = zeroArray(3, 2);
console.log(matrix);

splice()

splice() 最多可以接受 3 个参数,第一个参数代表从数组中的哪个索引开始移除元素,而第二个参数表示要从数组中的这个位置开始删除多少个元素,第三个参数可以是一个或多个元素,这些元素会被添加到数组中。

slice()

slice() 不会修改数组,而是会复制出一个新数组。 slice() 只接收 2 个输入参数:第一个是开始提取元素的位置(索引),第二个是提取元素的结束位置(索引)。 提取的元素中不包括第二个参数所对应的元素。 

function forecast(arr) {
  let newArr=arr.slice(2, 4);
  return newArr;
}
console.log(forecast(['cold', 'rainy', 'warm', 'sunny', 'cool', 'thunderstorms']));

使用 for 循环遍历数组中的全部元素

function filteredArray(arr, elem) {
  let newArr = [];
  for(let i = 0; i < arr.length; i++){
    if(arr[i].indexOf(elem) == -1){//注意思路
      newArr.push(arr[i]);
    }
  }
  return newArr;
}

反转字符串

function reverseString(str) {
    let result = "";
    for (let i = str.length - 1; i >= 0; i--) {
        result += str[i];
    }
    return result;
}
reverseString("hello"); //olleh

找出多个数组中最大数字

function largestOfFour(arr) {  
  let array=[];
  for(let i=0;i<arr.length;i++)
    {
      arr[i].sort(function(x,y){
        return y-x;
      });
      array.push(arr[i][0]);
    }
  console.log(array);
  return array;
}
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);

确认结尾

slice() 方法可提取字符串的某个部分,并以新的字符串返回被提取的部分。

// 方法一
function confirmEnding(str, target) {
  if(str.slice(-target.length)===target){
    return true;
  }else{
    return false;
  }
}
confirmEnding("Bastian", "n");

// 方法二
function confirmEnding(str, target) {
  let arr1=str.split('');
  console.log(arr1);
  let arr2=target.split('');
  console.log(arr2);
  let j=arr1.length-1;
  console.log(j);
  for (let i = arr2.length-1; i >=0; i--,j--) {
    console.log(i);
    if(arr1[j]!=arr2[i]){
      return false;
    }
  }
  return true;
}
console.log(confirmEnding("Bastian", "n"));

按参数过滤数组

对于数组中的一个元素 x,若 func(x) 返回的结果为 true,则校验测试通过。 如果没有符合条件的元素,返回 undefined

function findElement(arr, func) {
  let num = 0;
  for(let i=0;i<arr.length;i++){
    if(func(arr[i])){
      num=arr[i];
      break;
    }
  }
  if(!num){
    return undefined;
  }else{
    return num;
  }
}
console.log(findElement([1, 2, 3, 4], num => num % 2 === 0));

Slice 与 Splice

function frankenSplice(arr1, arr2, n) {
  let newArr=arr2.slice('');// 不改变源数组
  for(let i=0;i<arr1.length;i++){
    newArr.splice(n,0,arr1[i]);
    n++;// 插入的位置
  }
  return newArr;
}
console.log(frankenSplice([1, 2, 3], [4, 5, 6], 1));

找出元素在排序后数组中的索引

function getIndexToIns(arr, num) {
  arr.push(num);
  arr.sort(function(a,b){
    return a-b;
  })
  let index=arr.indexOf(num);
  return index;
}
console.log(getIndexToIns([40, 60], 50)); // 1

比较字符串是否存在包含关系

function mutation(arr) {
  let item1 = arr[0].toLowerCase();
	let item2 = arr[1].toLowerCase();
	let len2 = item2.length;
		for(let i=0;i<len2;i++){
			if(item1.indexOf(item2[i])== -1){
				return false;
			}
		}
  return true;
}
console.log(mutation(["hello", "Hello"]));

根据size分隔成二维数组

function chunkArrayInGroups(arr, size) {
  let newArr=[];
  for(let i=0;i<arr.length;i+=size){
    let item=arr.slice(i,i+size);// [ 'a', 'b' ], [ 'c', 'd' ]
    newArr.push(item);
  }
  return newArr;
}
console.log(chunkArrayInGroups(["a", "b", "c", "d"], 2));

 

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

茶茶呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值