javascript中的一些在工作中常用到的方法

484 阅读5分钟

- javascript 中将对象转换成数组的方法

  1. 使用Object.keys()Object.values()Object.entries()获取对象的键、值或键值对数组。
const obj = { a: 1, b: 2, c: 3 };
const keys = Object.keys(obj); // ["a", "b", "c"]  属性为数组
const values = Object.values(obj); // [1, 2, 3]   值为数组
const entries = Object.entries(obj); // [["a", 1], ["b", 2], ["c", 3]]每个属性和值都是数组

- javascript 中将数组转换成对象的方法

要将JavaScript数组转换为对象,您可以使用Array.prototype.reduce方法。这个方法允许您遍历数组并构建一个由键值对组成的对象。

假设数组中的每个元素都是一个带有两个元素的数组,其中第一个是键,第二个是值:

const array = [
  ['key1', 'value1'],
  ['key2', 'value2'],
  ['key3', 'value3']
];
 
const object = array.reduce((accumulator, currentItem) => {
  accumulator[currentItem[0]] = currentItem[1];
  return accumulator;
}, {});
 
console.log(object);

输出将是:

{
  key1: 'value1',
  key2: 'value2',
  key3: 'value3'
}

在这个例子中,reduce方法的第二个参数是一个空对象{},它初始化累计器。在每次迭代中,当前数组项的第一个元素(键)被用作对象属性名,第二个元素(值)被用作对应的属性值。最终,reduce方法返回这个对象,其中包含了所有数组中的键值对。

- JavaScript中数组去重的代码

  1. 使用 Set JavaScript 的 Set 对象允许你存储唯一值,因此你可以使用它来去除数组中的重复项。
let arr = [1, 2, 2, 3, 4, 4, 5];
let uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5]
  1. 使用 filter 和 indexOf

你可以使用 Array.prototype.filter 方法和 Array.prototype.indexOf 方法来创建一个只包含不重复元素的新数组。

let arr = [1, 2, 2, 3, 4, 4, 5];
let uniqueArr = arr.filter((item, index, arr) => arr.indexOf(item) === index);
console.log(uniqueArr); // [1, 2, 3, 4, 5]
  1. 使用 reduce

你也可以使用 Array.prototype.reduce 方法来创建一个只包含不重复元素的新数组。

let arr = [1, 2, 2, 3, 4, 4, 5];
let uniqueArr = arr.reduce((accumulator, current) => {
  if (!accumulator.includes(current)) {
    accumulator.push(current);
  }
  return accumulator;
}, []);
console.log(uniqueArr); // [1, 2, 3, 4, 5]

- 简单的数组结构变更

JavaScript中数组的常用方法有:

  1. push() - 在数组末尾添加一个或多个元素,并返回新的长度。
  2. pop() - 删除数组的最后一个元素,并返回那个元素。
  3. shift() - 删除数组的第一个元素,并返回那个元素。
  4. unshift() - 在数组的开始添加一个或多个元素,并返回新的长度。
  5. slice() - 返回数组的一个浅拷贝。
  6. splice() - 通过删除现有元素和/或添加新元素来更改一个数组的内容。
  7. concat() - 连接两个或更多数组,并返回一个新数组。
  8. join() - 将数组中的所有元素转换为一个字符串。
  9. reverse() - 颠倒数组中元素的顺序。
  10. sort() - 对数组的元素进行排序。
  11. forEach() - 遍历数组中的每个元素并执行回调函数。
  12. map() - 创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
  13. filter() - 创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
  14. reduce() - 对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
  15. reduceRight() - 对数组中的每个元素执行一个由您提供的reducer函数(降序执行),将其结果汇总为单个返回值。

示例代码:

let numbers = [1, 2, 3, 4, 5];
 
// 1. push()
numbers.push(6); // 返回新长度:6
 
// 2. pop()
let lastItem = numbers.pop(); // 返回5,numbers现在是[1, 2, 3, 4]
 
// 3. shift()
let firstItem = numbers.shift(); // 返回1,numbers现在是[2, 3, 4]
 
// 4. unshift()
numbers.unshift(0); // 返回新长度:4,numbers现在是[0, 2, 3, 4]
 
// 5. slice()
let sliceArray = numbers.slice(1, 3); // 返回[2, 3],numbers未改变
 
// 6. splice()
let spliced = numbers.splice(1, 2, 6, 7); // 返回[2, 3],numbers现在是[0, 6, 7, 4]
 
// 7. concat()
let combined = numbers.concat([8, 9]); // 返回[0, 6, 7, 4, 8, 9]
 
// 8. join()
let joined = numbers.join('-'); // 返回"0-6-7-4"
 
// 9. reverse()
numbers.reverse(); // numbers现在是[4, 7, 6, 0]
 
// 10. sort()
numbers.sort((a, b) => a - b); // 升序排序,numbers现在是[0, 4, 6, 7]
 
// 11. forEach()
numbers.forEach(num => console.log(num)); // 打印0, 4, 6, 7
 
// 12. map()
let doubled = numbers.map(num => num * 2); // 返回[0, 8, 12, 14]
 
// 13. filter()
let even = numbers.filter(num => num % 2 === 0); // 返回[

- 数组结构需要复杂的调整,且产生一个新数组

例如:JavaScript给字符串数组的每一项添加一个key

在JavaScript中,给字符串数组的每一项添加一个key通常意味着将其转换为一个对象数组,每个对象包含原字符串作为值和一个唯一的key。以下是一个实现这一功能的示例代码:

// 假设有一个字符串数组
const stringArray = ['apple', 'banana', 'cherry'];
 
// 给每个字符串添加一个唯一的key
const objectArray = stringArray.map((item, index) => ({ key: `key_${index}`, value: item }));
 
console.log(objectArray);

这段代码使用了Array.prototype.map函数来遍历字符串数组,并为每个字符串生成一个以其索引为基础的唯一key。结果是一个对象数组,每个对象包含了keyvalue属性。在实际应用中,你可能想要使用更加业务相关的key生成方式,例如基于字符串内容的哈希或UUID 例如:JavaScript给字符串数组的每一项添加一个key,并且key为3 的b属性



let stringArray = ['a', 'b', 'c'];
 
// 函数用于创建具有b属性为3的对象
function createObjectWithKey(str) {
  return {
    key: {
      b: 3
    }
  };
}
 
// 使用map方法为数组中的每个字符串添加对象
stringArray = stringArray.map(item => {
  return {
    ...createObjectWithKey(item),
    value: item
  };
});
 
console.log(stringArray);
//执行上述代码后,`stringArray`将变为以下结构:
//[
//  { key: { b: 3 }, value: 'a' },
//  { key: { b: 3 }, value: 'b' },
//  { key: { b: 3 }, value: 'c' }
//]