牛牛笔记
主页
网址
笔记
博客
关于
拒绝内耗,先完成,再完美
Powered |
VitePress
黔ICP备-2023015500号-3
⏰ 未知时间
javascript
编程知识
数组
25060801

1. 简单需求

1.1 将数组倒序排列

  • 利用 reverse() ,会改变原数组
js
const arr = [1, 2, 3, 4, 5];
arr.reverse();
console.log(arr); // 输出: [5, 4, 3, 2, 1]

1.2 提取数组每一项的属性值,形成新数组

js
const originalArray = [
  { id: 1, name: 'Alice', age: 25 },
  { id: 2, name: 'Bob', age: 30 },
  { id: 3, name: 'Charlie', age: 28 }
];

// 提取所有 name 属性值
const names = originalArray.map(item => item.name);
console.log(names); // 输出: ['Alice', 'Bob', 'Charlie']

// 提取所有 age 属性值
const ages = originalArray.map(item => item.age);
console.log(ages); // 输出: [25, 30, 28]

1.3 数组去重

js
const arr = [1, 2, 2, 3, 'a', 'a'];
const unique = [...new Set(arr)];
// 结果: [1, 2, 3, 'a']

2. 多维数组

2.1 将多维数组转为一维数组

js
const reArrange = (data, list=[]) => {
    data.forEach((item) => {
        if (item.children && item.children.length > 0) {
            reArrange(item.children, list);
        } else {
            list.push(item);
        }
    });
    return list;
};
js
// 重组数据函数
const reArrange = (data, list=[]) => { // 设置list的起始值,因为内部会再次调用函数,必须存在list变量
    // 利用 forEach 遍历数据
    data.forEach((item) => {
        // 当数据中存在子代时,会再次执行,遍历子代数据,直到找到末端数据
        if (item.children && item.children.length > 0) {
            reArrange(item.children, list);
        // 没有子代,直接生成新的数组内容
        } else {
            list.push(item);
        }
    });
    return list;
};