преобразование массива в отдельный массив объектов

#javascript #arrays #object

#javascript #массивы #объект

Вопрос:

у меня есть массив, и я хочу преобразовать этот массив в отдельный объект, рад помочь мне, спасибо

 array = ["January", 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, "February", 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]
 

я хочу

 result  = [
   {
     month:'January',
     days:[ 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]
   },
   {
     month:'February',
     days:[ 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]
   }
]
 

Комментарии:

1. выполните итерацию по массиву с помощью reduce, создавая выходные данные по мере необходимости

2. Привет, добро пожаловать в Stack Overflow. Не могли бы вы добавить свою попытку и проблемы, с которыми вы столкнулись? Спасибо

Ответ №1:

Сначала выясните индексы для строк в массиве, чтобы вы могли разделить массив.

 const process = (arr) => {
  const result = [];
  let last = -1;
  for (let i = 0; i <= arr.length; i  ) {
    if (typeof arr[i] === "string" || !(i in arr)) {
      if (last !== -1) {
        result.push([last, i]);
      }
      last = i;
    }
  }

  return result.map(([start, end]) => ({
    month: arr[start],
    days: arr.slice(start   1, end),
  }));
};

const array = ["January", 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, "February", 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]

console.log(process(array));