数组的批量制造、合并去重

这篇博客介绍了三种不同的JavaScript方法来批量生成包含特定数据的数组,并详细讲解了两种数组合并去重的策略,包括利用ES6 Set和通过filter与indexOf实现。此外,还针对对象数组的去重问题提出了解决方案,演示了如何避免引用相同导致的去重不彻底问题。
摘要由CSDN通过智能技术生成

1、批量制造数据

一、创建空数组,使用for循环,批量push数据

function createData() {
    const data = [];
    for (let i = 0; i < 1000; i++){
        data.push({
            name: `name${i}`
        })
    }
    return data;
}

const data = createData();
console.log(data);

二、创建空数组,用fill填充,然后map

function createData() {
    return new Array(1000).fill(null).map((v, i) => ({name: `name${i}`}))
}

const data = createData();
console.log(data);

三、Array.from 第二个初始化返回数据

function createData() {
    return Array.from({length: 1000}, (v, i) => ({name: `name${i}`}))
}

const data = createData();
console.log(data);

2、数组合并去重

一、ES6 Set去重

const arr1 = [1, 2, 3]
const arr2 = [3, 4, 5]
console.log(new Set([...arr1, ...arr2]))  // => [1, 2, 3, 4, 5]

二、filter筛选,indexOf判断是否存在

const arr1 = [1, 2, 3, 3, 4, 2]
const arr2 = [3, 4, 5]

function mergeArray(arr1, arr2) {
    return [...arr1, ...arr2].filter((cur, index, arr) => arr.indexOf(cur, index + 1) 
}

三、对象去重

const arr1 = [{ id: 1 }, { id: 2 }, { id: 3 }];
const arr2 = [{ id: 3 }, { id: 4 }, { id: 5 }];

console.log(Array.from(new Set([...arr1, ...arr2])));

// [ { id: 1 }, { id: 2 }, { id: 3 }, { id: 3 }, { id: 4 }, { id: 5 } ] 
// 这样对象都是独立的引用,无法去除属性相同的数据

// 可以这样做达到目的
function mergeRepeatArray(arr1, arr2) {
    let obj= {}, newArr = [];
    let arr = [...arr1, ...arr2];
    for (let i = 0; i < arr.length; i ++){
        if (!obj[arr[i].id]) {
            obj[arr[i].id] = arr[i];
            newArr.push(arr[i])
        }

    }
    return newArr;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值