Разделение объекта на две части 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);