Sobes.tech
Junior

Ինչպե՞ս կարելի է հեռացնել բոլոր կրկնօրինակները զանգվածից։

sobes.tech AI

Պատասխան AI-ից

Կան մի քանի տարածված եղանակներ՝

  1. Օգտագործում Set-ի: Ամենաժամանակակից և կարճ եղանակը։ Set պահպանում է միայն եզակի արժեքներ:

    const arr = [1, 2, 2, 3, 4, 4, 5];
    const uniqueArr = [...new Set(arr)];
    // uniqueArr կլինի [1, 2, 3, 4, 5]
    
    const arr = [{ id: 1, name: 'A' }, { id: 2, name: 'B' }, { id: 1, name: 'A' }];
    const uniqueArr = Array.from(new Set(arr.map(JSON.stringify))).map(JSON.parse);
    // Օբյեկտների համար անհրաժեշտ է փոխարկել նրանց տողերի, որպեսզի ճիշտ համեմատել Set-ով
    // uniqueArr կլինի [{ id: 1, name: 'A' }, { id: 2, name: 'B' }]
    
  2. Օգտագործում filter և indexOf-ի: Մասիվի ֆիլտրում՝ թողնելով միայն առաջին հանդիպումները:

    const arr = [1, 2, 2, 3, 4, 4, 5];
    const uniqueArr = arr.filter((item, index) => arr.indexOf(item) === index);
    // uniqueArr կլինի [1, 2, 3, 4, 5]
    
  3. Օգտագործում reduce-ի: Նոր մասիվ ստեղծում՝ ավելացնելով միայն նոր արժեքները:

    const arr = [1, 2, 2, 3, 4, 4, 5];
    const uniqueArr = arr.reduce((accumulator, current) => {
        if (!accumulator.includes(current)) {
            accumulator.push(current);
        }
        return accumulator;
    }, []);
    // uniqueArr կլինի [1, 2, 3, 4, 5]
    
    const arr = [1, 2, 2, 3, 4, 4, 5];
    const uniqueArr = arr.reduce((accumulator, current) => accumulator.includes(current) ? accumulator : [...accumulator, current], []);
    // Կարճ տարբերակ
    // uniqueArr կլինի [1, 2, 3, 4, 5]
    
  4. Օգտագործում օբյեկտ/Map: Ժամանակավոր օբյեկտ կամ Map ստեղծում՝ արդեն հանդիպած տարրերը հետևելու համար:

    const arr = [1, 2, 2, 3, 4, 4, 5];
    const seen = {};
    const uniqueArr = arr.filter(item => seen.hasOwnProperty(item) ? false : (seen[item] = true));
    // uniqueArr կլինի [1, 2, 3, 4, 5]
    
    const arr = [1, 2, 2, 3, 4, 4, 5];
    const seen = new Map();
    const uniqueArr = arr.filter(item => {
        if (!seen.has(item)) {
            seen.set(item, true);
            return true;
        }
        return false;
    });
    // uniqueArr կլինի [1, 2, 3, 4, 5]
    

Set-ի օգտագործումը սովորաբար ամենաարդյունավետ և ընթեռնելի մեթոդն է հիմնական տիպերի համար։ Օբյեկտների համար կարող է անհրաժեշտ լինել լրացուցիչ լոգիկա։