티스토리 뷰

각 배열의 n번째값이 group인 경우의 index를 찾는 법

나는 0번째 값이 group인 것으려고 아래처럼 만들었는데, 원하는 값을 확인해서 하면 될 듯 하다.

만약 -1이 반환된다면 없다는 것

let field = [
    ['apple', 'red'],
    ['banana', 'yellow'],
    ['grape', 'purple']
];

let group = 'banana';

let index = field.findIndex(item => item[0] === group);

console.log(index); // 결과: 1

 

 

 

this.array 배열에서 name 속성이 'nacho'인 요소를 찾는다.

만약 해당 요소를 찾으면 그 요소를 value 변수에 저장하고, 찾지 못하면 undefined가 저장

let  value= this.array.find(item => item.name=== 'nacho');

 


 

 

this.array 배열에서 name 속성이 " nacho " (공백이 포함된 문자열)인 요소의 인덱스 찾기

만약 해당 요소를 찾으면 그 요소의 인덱스를 index 변수에 저장하고, 찾지 못하면 -1이 저장

const index = this.array.findIndex(data => data.name === " nacho ");

 


 

value 변수가 존재하고 name 속성이 존재할 경우 해당 속성 값을 가져오고, 그렇지 않은 경우 기본값으로 ' nacho '를 설정

value 변수에 값이 있으면 value.namenacho 변수에 저장하고,

값이 없으면 ' nacho ' (공백이 포함된 문자열)을 nacho 변수에 저장

이렇게 함으로써, value가 존재하지 않거나 name 속성이 없는 경우에 대비하여 nacho 변수에 기본값을 설정

let nacho = value ? value . name : ' nacho ';

 


 

 

reduce() 함수를 사용하여 배열을 그룹화하는 작업을 수행

주어진 데이터를 그룹화하고, 각 그룹에 대한 키는 해당 항목의 수정일로 설정

const groupedByDate = data.reduce((acc, curr) => {
    // 현재 항목의 날짜를 키로 사용하여 그룹화
    const key = curr['날짜'];
    // 그룹이 없으면 새로운 배열을 생성하고 현재 항목을 추가
    if (!acc[key]) {
        acc[key] = [];
    }
    acc[key].push(curr);
    return acc;
}, {});

 

위 코드는 reduce() 함수를 사용하여 data 배열을 순회하면서 각 항목을 그룹화합니다.

acc는 누산기로써, 초기값은 빈 객체 {}입니다.  curr은 현재 순회 중인 배열 요소입니다.

 

각 항목에서 '날짜' 속성을 추출하여 그룹화 키로 사용합니다.

만약 해당 키가 누산기 객체(acc)에 없다면, 새로운 배열을 생성하고 현재 항목을 추가합니다.

이미 해당 키가 존재한다면, 그룹에 현재 항목을 추가합니다.

 

결과적으로 groupedByDate 객체는 날짜별로 데이터가 그룹화된 형태로 구성됩니다.

각 키는 날짜를 나타내고, 각 값은 해당 날짜에 속하는 데이터 항목들의 배열입니다.

 

해당 함수를 실행하면 아래와 같은 값이 나온다. 

원하는 사람이 있을 것 같아서 콘솔에서 아래와 같이 입력하면 나와 같은 값이 나올 것이다.

const data = [
    { 이름: 'Alice', 날짜: '2024-03-01' },
    { 이름: 'Bob', 날짜: '2024-03-02' },
    { 이름: 'Charlie', 날짜: '2024-03-01' },
    { 이름: 'David', 날짜: '2024-03-02' },
    { 이름: 'Eve', 날짜: '2024-03-03' }
];

const groupedByDate = data.reduce((acc, curr) => {
    // 현재 항목의 날짜 키로 사용하여 그룹화
    const key = curr['날짜'];
    // 그룹이 없으면 새로운 배열을 생성하고 현재 항목을 추가
    if (!acc[key]) {
        acc[key] = [];
    }
    acc[key].push(curr);
    return acc;
}, {});

console.log(groupedByDate)

{
    "2024-03-01": [
        {
            "이름": "Alice",
            "날짜": "2024-03-01"
        },
        {
            "이름": "Charlie",
            "날짜": "2024-03-01"
        }
    ],
    "2024-03-02": [
        {
            "이름": "Bob",
            "날짜": "2024-03-02"
        },
        {
            "이름": "David",
            "날짜": "2024-03-02"
        }
    ],
    "2024-03-03": [
        {
            "이름": "Eve",
            "날짜": "2024-03-03"
        }
    ]
}