JavaScript -基础数据结构及算法

数组(Array)

> 包含类型
let simpleArray = ['one', 2, 'three', true, false, undefined, null];
> 数组长度
Array.length
> 索引
let ourVariable = ourArray[0];
> 设置一个索引位置的元素值
ourArray[1] = "not b anymore";
> push() 将元素插入到数组的末尾
arr.push(7, 'VIII', 9)
> unshift() 将元素插入到数组的开头
arr.unshift('I', 2, 'three')
> pop() 从数组的末尾移除一个元素
greetings.pop();
> shift() 从数组的开头移除一个元素
greetings.shift();
> splice() 从数组中的任意位置连续删除任意数量的元素
splice() 最多可以接受 3 个参数
第一个参数代表从数组中的哪个索引开始移除元素,而第二个参数表示要从数组中的这个位置开始删除多少个元素
let newArray = array.splice(3, 2);
#不仅会修改调用该方法的数组,还会返回一个包含被移除元素的数组
> splice() 添加元素
第三个参数可以是一个或多个元素,这些元素会被添加到数组中
numbers.splice(startIndex, amountToDelete, 13, 14);
#从删除位置插入元素
#第二个参数如果设置为 0,则不会删除项目
> slice() 复制数组元素
slice() 只接收 2 个输入参数:第一个是开始提取元素的位置(索引),第二个是提取元素的结束位置(索引)。 提取的元素中不包括第二个参数所对应的元素
let weatherConditions = ['rain', 'snow', 'sleet', 'hail', 'clear'];
let todaysWeather = weatherConditions.slice(1, 3);


> 使用展开运算符复制数组
let thisArray = [true, true, undefined, false, null];
let thatArray = [...thisArray];

> 使用展开运算符合并数组
let thisArray = ['sage', 'rosemary', 'parsley', 'thyme'];
let thatArray = ['basil', 'cilantro', ...thisArray, 'coriander'];
> 使用 indexOf() 检查元素是否存在
indexOf() 方法接受一个元素作为输入参数,并返回该元素在数组中的位置(索引);若该元素不存在于数组中则返回 -1
let fruits = ['apples', 'pears', 'oranges', 'peaches', 'pears'];
fruits.indexOf('dates');
对象
> 将键值对添加到对象中

const tekkenCharacter = {
  player: 'Hwoarang',
  fightingStyle: 'Tae Kwon Doe',
  human: true
};
添加一个叫做 origin 的属性
tekkenCharacter.origin = 'South Korea';
tekkenCharacter['hair color'] = 'dyed orange';
 如果不加上引号,那么中括号里的内容会被当作一个变量来解析,这个变量对应的值就会作为要设置的属性
const eyes = 'eye color';
tekkenCharacter[eyes] = 'brown';

> 使用 delete 关键字删除对象属性
let foods = {
  apples: 25,
  oranges: 32,
  plums: 28,
  bananas: 13,
  grapes: 35,
  strawberries: 27
};

delete foods.apples

> 检查对象是否具有某个属性
users 对象,检查它是否含有 Alan 属性
1. users.hasOwnProperty('Alan');
2. 'Alan' in users;
两者结果都为 true

> 使用 for...in 语句遍历对象
for (let user in users) {
  console.log(user);
}
这个变量在遍历对象的语句执行过程中会一直被重置并赋予新值
对象中的键是无序的

> 使用 Object.keys() 生成由对象的所有属性组成的数组
Object.keys(对象) 
传入一个对象作为参数
返回一个由对象中所有属性(字符串)组成的数组。 数组中元素的顺序是不确定的。
反转字符串
str.split("").reverse().join("")
计算整数的阶乘

对于整数 n,n 的阶乘就是所有小于等于 n 的正整数的乘积。
阶乘通常用符号 n! 来表示。
例如:5! = 1 * 2 * 3 * 4 * 5 = 120

function factorialize(num) {
  for (var product = 1; num > 0; num--) {
    product *= num;
  }
  return product;
}

function factorialize(num) {
  if (num === 0) {
    return 1;
  }
  return num * factorialize(num - 1);
}
找出字符串中的最长单词
return Math.max(...str.split(" ").map(word => word.length));

const array1 = [1, 4, 9, 16];
// pass a function to map
const map1 = array1.map(x => x * 2);
console.log(map1);
// expected output: Array [2, 8, 18, 32]

确认结尾

检查字符串是否以给定的目标字符串结束 .endsWith()

1.   .endsWith() 
2. 
function confirmEnding(str, target) {
  if(str.slice(-target.length)===target){
    return true;
  }
  else{
    return false;
  }
  
}
confirmEnding("Bastian", "n");
重复输出字符串 str.repeat()
1.  
var str = "Runoob";
str.repeat(2);
2.
function repeatStringNumTimes(str, num) {
  return num > 0 ? str + repeatStringNumTimes(str, num - 1) : '';
}
按参数过滤数组 Array.find()
Array.find()
find()返回数组中满足条件的第一个元素的值。如果没有值满足测试函数,则返回undefinedconst array1 = [5, 12, 8, 130, 44];
const found = array1.find(element => element > 10);
console.log(found);
#返回12


function findElement(arr, func) {
  return arr.find(func);
}
findElement([1, 2, 3, 4], num => num % 2 === 0);
句中单词首字母大写
function titleCase(str) {
  return str.toLowerCase().replace(/(^|\s)\S/g, L => L.toUpperCase());
}
过滤数组中的假值 Array.filter()

从数组中移除所有假值(falsy values)。
JavaScript 中的假值有 false、null、0、""、undefined、NaN。

function bouncer(arr) {
  console.log(arr.filter(Boolean))
  return arr.filter(Boolean);
}

const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter(word => word.length > 6);
console.log(result);
// expected output: Array ["exuberant", "destruction", "present"]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值