Показать сообщение отдельно
  #4 (permalink)  
Старый 08.09.2021, 16:25
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,585

рони, нет, ему надо это):
function fixArraysRecursive(value) {
  if(
    // проверяем что объект
    typeof value === 'object' 
    // проверяем что простой объект, а не какой-нить Date
    && Object.prototype.toString.call(value) === '[object Object]'
  ){
    // получаем ключи объекта
    const keys = Object.keys(value);

    // проверяем что есть ключ 0
    const isArray = 0 in value 
      // если да - что все ключи числа
      && keys.every(key => key === parseInt(key, 10).toString())
      // если да - что нет пропусков
      && keys
        .map(Number)
        .sort((a, b) => a - b)
        .every((key, index) => key === index);

    const target = isArray ? Array(keys.length) : {...value};
    
    keys.forEach((key, i) => target[key] = fixArraysRecursive(value[key]));

    return target;
  }
  return value;
}
__________________
29375, 35

Последний раз редактировалось Aetae, 08.09.2021 в 16:40.
Ответить с цитированием