Разделение объекта на две части JS

Есть:

let obj = {"00:00": 1, "00:05": 4, "00:10": 7, "00:15": 5}

Мне нужно разделить его на две части, допустим по 00:10, чтобы было так:

{"00:00": 1, "00:05": 4}
{"00:10": 7, "00:15": 5}

Ответы (2 шт):

Автор решения: Vasily

Один из вариантов как это можно реализовать:

const obj = {"00:00": 1, "00:05": 4, "00:10": 7, "00:15": 5}
const result1 = {}
const result2 = {}

Object.keys(obj).forEach(key => {
  const targetNum = Number(key.slice(-2))
  if (targetNum >= 10) {
    result2[key] = obj[key] 
  } else {
    result1[key] = obj[key] 
  }
  // или
  // ;(targetNum >= 10 ? result2 : result1)[key] = obj[key]
})

console.log(result1, result2)
// {"00:00": 1, "00:05": 4}
// {"00:10": 7, "00:15": 5}

→ Ссылка
Автор решения: vsemozhebuty

Ещё вариант:

const obj = { "00:00":1, "00:05":4, "00:10":7, "00:15":5 };

const keyToSplitBefore = "00:10";

const entries = Object.entries(obj);

const indexToSplitBefore = entries.findIndex(
  ([key]) => key === keyToSplitBefore
);

const ob1 = Object.fromEntries(entries.slice(0, indexToSplitBefore));
const ob2 = Object.fromEntries(entries.slice(indexToSplitBefore));

console.log(ob1);
console.log(ob2);

Или так:

const obj = { "00:00":1, "00:05":4, "00:10":7, "00:15":5 };

const keyToSplitBefore = "00:10";

const ob1 = {};
const ob2 = {};

let target = ob1;

for (const [key, value] of Object.entries(obj)) {
  if (key === keyToSplitBefore) target = ob2;
  target[key] = value
}

console.log(ob1);
console.log(ob2);

→ Ссылка