前端数据常用API

158 阅读6分钟

前言

对前端 对象、数组 数据结构处理API收集,不全但细。

对象篇

Object.assign(target, source1, source2, ...)

  • 将一个或多个源对象的属性复制到目标对象中。
  • 改变原对象。
  • 示例
const target = { a: 1 };
const source = { b: 2, c: 3 };

const result = Object.assign(target, source);

console.log(target); // { a: 1, b: 2, c: 3 }
console.log(result); // { a: 1, b: 2, c: 3 }

Object.keys(obj)

  • 返回一个包含对象自身可枚举属性名称的数组。
  • 不改变原对象。
  • 示例
const obj = { a: 1, b: 2, c: 3 };

const keys = Object.keys(obj);

console.log(keys); // ['a', 'b', 'c']

Object.values(obj)

  • 返回一个包含对象自身可枚举属性值的数组。
  • 不改变原对象。
  • 示例
const obj = { a: 1, b: 2, c: 3 };

const values = Object.values(obj);

console.log(values); // [1, 2, 3]

Object.entries(obj)

  • 返回一个包含对象自身可枚举属性键值对的数组。
  • 不改变原对象。
  • 示例
const obj = { a: 1, b: 2, c: 3 };

const entries = Object.entries(obj);

console.log(entries); // [['a', 1], ['b', 2], ['c', 3]]

Object.freeze(obj)

  • 冻结对象,使其属性不可修改。
  • 改变原对象。
  • 示例
const obj = { a: 1, b: 2 };

Object.freeze(obj);

obj.c = 3; // 无效操作,不会改变对象

console.log(obj); // { a: 1, b: 2 }

Object.seal(obj)

  • 封闭对象,使其属性不可添加或删除,但可修改。
  • 改变原对象。
  • 示例
const obj = { a: 1, b: 2 };

Object.seal(obj);

obj.c = 3; // 无效操作,不会添加属性
delete obj.a; // 无效操作,不会删除属性
obj.b = 4; // 有效操作,属性值可修改

console.log(obj); // { a: 1, b: 4 }

Object.create(proto, propertiesObject)

  • 使用指定的原型对象创建一个新对象。
  • 不改变原对象。
  • 示例
const person = {
  greet() {
    console.log(`Hello, ${this.name}!`);
  }
};

const john = Object.create(person, {
  name: { value: 'John' }
});

john.greet(); // Hello, John!

数组篇

map

  • 功能:对数组中的每个元素执行指定的函数,并返回一个新数组,新数组的元素是原始数组经过函数处理后的结果。
  • 不会改变原数组。
  • 示例:
const numbers = [1, 2, 3, 4, 5];
const multipliedNumbers = numbers.map(num => num * 2);
console.log(multipliedNumbers); // [2, 4, 6, 8, 10]

filter

  • 功能:对数组中的每个元素进行测试,并返回一个新数组,新数组包含满足条件的元素。
  • 不会改变原数组。
  • 示例:
const numbers = [1, 2, 3, 4, 5];
const evenNumbers = numbers.filter(num => num % 2 === 0);
console.log(evenNumbers); // [2, 4]

reduce

  • 功能:使用指定的函数对数组中的每个元素进行累积计算,并返回一个累积结果。
  • 不会改变原数组。
  • 示例:
const numbers = [1, 2, 3, 4, 5];
const sum = numbers.reduce((acc, num) => acc + num, 0);
console.log(sum); // 15

sort

  • 功能:对数组进行排序,可以使用自定义的比较函数。
  • 会改变原数组。
  • 示例:
const numbers = [3, 1, 4, 2, 5];
const sortedNumbers = numbers.sort((a, b) => a - b);
console.log(sortedNumbers); // [1, 2, 3, 4, 5]
console.log(numbers); // [1, 2, 3, 4, 5] (原数组已改变)

find

  • 功能:返回数组中满足指定条件的第一个元素。
  • 不会改变原数组。
  • 示例:
const numbers = [1, 2, 3, 4, 5];
const foundNumber = numbers.find(num => num > 3);
console.log(foundNumber); // 4

findIndex

  • 功能:返回数组中满足指定条件的第一个元素的索引。
  • 不会改变原数组。
  • 示例:
const numbers = [1, 2, 3, 4, 5];
const foundIndex = numbers.findIndex(num => num > 3);
console.log(foundIndex); // 3

some

  • 功能:检查数组中是否至少存在一个满足指定条件的元素,返回布尔值。
  • 不会改变原数组。
  • 示例:
const numbers = [1, 2, 3, 4, 5];
const hasEvenNumber = numbers.some(num => num % 2 === 0);
console.log(hasEvenNumber); // true

every

  • 功能:检查数组中的所有元素是否都满足指定条件,返回布尔值。
  • 不会改变原数组。
  • 示例:
const numbers = [1, 2, 3, 4, 5];
const allPositive = numbers.every(num => num > 0);
console.log(allPositive); // true

slice

  • 功能:返回一个从原数组中指定开始索引到结束索引(不包括结束索引)的新数组。
  • 不会改变原数组。
  • 示例:
const numbers = [1, 2, 3, 4, 5];
const slicedNumbers = numbers.slice(1, 4);
console.log(slicedNumbers); // [2, 3, 4]

concat

  • 功能:将多个数组合并为一个新数组。
  • 不会改变原数组。
  • 示例:
const numbers1 = [1, 2];
const numbers2 = [3, 4, 5];
const mergedNumbers = numbers1.concat(numbers2);
console.log(mergedNumbers); // [1, 2, 3, 4, 5]

push

  • 功能:将一个或多个元素添加到数组的末尾,并返回新数组的长度。
  • 会改变原数组。
  • 示例:
const numbers = [1, 2, 3];
const newLength = numbers.push(4, 5);
console.log(numbers); // [1, 2, 3, 4, 5]
console.log(newLength); // 5

pop

  • 功能:移除数组的最后一个元素,并返回移除的元素。
  • 会改变原数组。
  • 示例:
const numbers = [1, 2, 3];
const removedElement = numbers.pop();
console.log(numbers); // [1, 2]
console.log(removedElement); // 3

shift

  • 功能:移除数组的第一个元素,并返回移除的元素。
  • 会改变原数组。
  • 示例:
const numbers = [1, 2, 3];
const removedElement = numbers.shift();
console.log(numbers); // [2, 3]
console.log(removedElement); // 1

unshift

  • 功能:在数组的开头添加一个或多个元素,并返回新数组的长度。
  • 会改变原数组。
  • 示例:
const numbers = [2, 3, 4];
const newLength = numbers.unshift(0, 1);
console.log(numbers); // [0, 1, 2, 3, 4]
console.log(newLength); // 5

字符串篇

concat

  • 功能:将一个或多个字符串与原始字符串连接起来,返回一个新的字符串。
  • 不会改变原始字符串。
  • 示例:
let str = "Hello";
let newStr = str.concat(", world!");
console.log(str); // 输出 "Hello"
console.log(newStr); // 输出 "Hello, world!"

substring

  • 功能:返回一个新的字符串,包含原始字符串的指定部分。
  • 不会改变原始字符串。
  • 示例:
let str = "Hello, world!";
let newStr = str.substring(0, 5);
console.log(str); // 输出 "Hello, world!"
console.log(newStr); // 输出 "Hello"

slice

  • 功能:返回一个新的字符串,包含原始字符串的指定部分。
  • 不会改变原始字符串。
  • 示例:
let str = "Hello, world!";
let newStr = str.slice(7, 12);
console.log(str); // 输出 "Hello, world!"
console.log(newStr); // 输出 "world"

replace

  • 功能:返回一个新的字符串,其中指定的模式被替换为另一个字符串。
  • 不会改变原始字符串。
  • 示例:
let str = "Hello, world!";
let newStr = str.replace("world", "JavaScript");
console.log(str); // 输出 "Hello, world!"
console.log(newStr); // 输出 "Hello, JavaScript!"

toUpperCase

  • 功能:返回一个新的字符串,其中所有字符被转换为大写。
  • 不会改变原始字符串。
  • 示例:
let str = "Hello, world!";
let newStr = str.toUpperCase();
console.log(str); // 输出 "Hello, world!"
console.log(newStr); // 输出 "HELLO, WORLD!"

toLowerCase

  • 功能:返回一个新的字符串,其中所有字符被转换为小写。
  • 不会改变原始字符串。
  • 示例:
let str = "Hello, world!";
let newStr = str.toLowerCase();
console.log(str); // 输出 "Hello, world!"
console.log(newStr); // 输出 "hello, world!"

trim

  • 功能:返回一个新的字符串,其中移除了原始字符串两端的空格。
  • 不会改变原始字符串。
  • 示例:
let str = "   Hello, world!   ";
let newStr = str.trim();
console.log(str); // 输出 "   Hello, world!   "
console.log(newStr); // 输出 "Hello, world!"

charAt

  • 功能:返回指定索引位置的字符。不会改变原始字符串。
  • 不会改变原始字符串。
  • 示例:
let str = "Hello, world!";
let char = str.charAt(4);
console.log(str); // 输出 "Hello, world!"
console.log(char); // 输出 "o"

split

  • 功能:将字符串分割成一个字符串数组,基于指定的分隔符。不会改变原始字符串。
  • 不会改变原始字符串。
  • 示例:
let str = "Hello, world!";
let arr = str.split(",");
console.log(str); // 输出 "Hello, world!"
console.log(arr); // 输出 ["Hello", " world!"]

indexOf

  • 功能:返回指定字符或子字符串在原始字符串中第一次出现的索引位置。
  • 不会改变原始字符串。
  • 示例:
let str = "Hello, world!";
let index = str.indexOf("o");
console.log(str); // 输出 "Hello, world!"
console.log(index); // 输出 4