본문 바로가기

잡단한것들/코딩연습장

배열 원하는 형태로 재조립하기

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
let arr = [
    '1.txt''1.json''1.wav''2.txt''2.json',
    '2.wav''3.txt''3.wav''4.txt',
    '4.json''4.wav''5.txt''5.json''5.wav',
    '6.txt''6.json''6.wav''7.txt''7.json',
    '7.wav''8.txt''8.json''8.wav''9.txt',
    '9.json''10.txt''10.json''10.wav',
    '11.txt''11.json''11.wav''12.txt''12.json',
    '12.wav''13.txt''13.json''13.wav''14.txt',
    '14.json''14.wav''15.txt''15.json''15.wav',
    '16.txt''16.json''16.wav''17.json',
    '17.wav''18.txt''18.wav''19.txt',
    '19.json''19.wav'
]
 
function uniqueFileName(files) {
    let newArr = [];
    files.map(file => {
        newArr.push(file.split('.')[0]);
    })
 
    const unique = [... new Set(newArr)];
    return unique
}
 
let total = {}
console.log(uniqueFileName(arr));
for (file of uniqueFileName(arr)) {
    // const filename = file.split('.')[0];
    // console.log(file)
    total[file] = { txt: '', wav: '', json: '' }
}
 
for (file of arr) {
    const filename = file.split('.')[0//파일명
    const ext = file.split('.')[1]; //확장자명
 
    total[filename][ext] = file;
}
 
console.log(total);
 
let result = Object.values(total);
 
console.log(result);

실행 결과

객체의 키값을 유동적으로 넣을경우 object[key]라는 문법을 사용하는 것과

객체를 배열로 다시 바꾸는 Object.values()라는 메서드를 사용하였다.

추가로 중복을 제거해주는 new Set도 사용하였다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Set

 

Set - JavaScript | MDN

Set 객체는 자료형에 관계 없이 원시 값과 객체 참조 모두 유일한 값을 저장할 수 있습니다.

developer.mozilla.org

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Object/values

 

Object.values() - JavaScript | MDN

Object.values() 메소드는 전달된 파라미터 객체가 가지는 (열거 가능한) 속성의 값들로 이루어진 배열을 리턴합니다. 이 배열은 for...in 구문과 동일한 순서를 가집니다. (for in 반복문은 프로토타

developer.mozilla.org