Задать вопрос
@KoRNeT46RuS

Почему функции по смещению свойств объектов работают только с объектами, у которых свойства состоят из букв?

Есть две функции (перемещение первого свойства в конец и перемещение последнего свойства в начало)
//перемещение последнего свойства объекта вначало
function moveLastPropertyToFirst (_obj) {
  if (typeof _obj !== 'object' || _obj === null || Object.keys(_obj).length === 0) {
    return _obj;
  }

  const keys = Object.keys(_obj);
  const lastKey = keys[keys.length - 1];
  const lastValue = _obj[lastKey];

  delete _obj[lastKey];

  // Создаем новый объект, чтобы сохранить порядок свойств.
  const newObj = {};
  newObj[lastKey] = lastValue;

  // Копируем оставшиеся свойства из исходного объекта в новый объект.
  for (const key of keys) {
    if (key !== lastKey) {
      newObj[key] = _obj[key];
    }
  }

  // Очищаем исходный объект и копируем свойства из нового объекта. Это нужно,
  // чтобы сохранить ссылку на исходный объект.
  for (const key of keys) {
    delete _obj[key];
  }

  for (const key in newObj) {
    if (newObj.hasOwnProperty(key)) {
      _obj[key] = newObj[key];
    }      
  }

  return _obj;
};
function moveFirstPropertyToEnd(obj) {
  if (!obj || Object.keys(obj).length === 0) {
    return obj; // Возвращаем исходный объект, если он пустой или не существует
  }

  const keys = Object.keys(obj);
  const firstKey = keys[0];
  const firstValue = obj[firstKey];

  delete obj[firstKey]; // Удаляем первое свойство

  obj[firstKey] = firstValue; // Добавляем свойство в конец

  return obj;
}


Делаем примеры

// Пример использования:
const myObject = {"144412":"3","291414":"3","291416":"3","291439":"3","291447":"3"};
const updatedObject = moveFirstPropertyToEnd(myObject);
console.log(updatedObject);
const myObject2 = {a:"3",b:"3",c:"3",d:"3",e:"3"};
const updatedObject2 = moveFirstPropertyToEnd(myObject2);
console.log(updatedObject2);


let myObject3 = {144412:"3",291414:"3",291416:"3",291439:"3",291447:"3"};
const updatedObject3 = moveLastPropertyToFirst(myObject3);
console.log(updatedObject3);
let myObject4 = {a:"3",b:"3",c:"3",d:"3",e:"3"};
const updatedObject4 = moveLastPropertyToFirst(myObject4);
console.log(updatedObject4);


В итоге выведет
(5) {144412: "3", 291414: "3", 291416: "...}
(5) {b: "3", c: "3", d: "3", e: "3", a: ...}
(5) {144412: "3", 291414: "3", 291416: "...}
(5) {e: "3", a: "3", b: "3", c: "3", d: ...}


ВТФ?))))
https://playcode.io/2346689
  • Вопрос задан
  • 69 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 2
VoidVolker
@VoidVolker Куратор тега JavaScript
Dark side eye. А у нас печеньки! А у вас?
Потому что в стандарте JS порядок свойств в объекте не гарантирован. Т.е., там может быть абсолютно любой порядок. Так что ваша функция бессмысленна. Если вам нужна сортировка - используйте массивы.
Ответ написан
Lynn
@Lynn
nginx, js, css
Хочешь порядок используй массив (ну или Map, но его не посортируешь).
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы