#javascript
#javascript
Вопрос:
У меня есть массив объектов задачи, подобных этому:
1-1 [
{
t_class_id: 1,
t_class_subject_id: 1,
t_class_task_id: 1,
title: 'Mengerjakan Soal',
sec_user_id: '4',
is_submit: 0,
is_intime: 0,
total: 1
},
{
t_class_id: 1,
t_class_subject_id: 1,
t_class_task_id: 1,
title: 'Mengerjakan Soal',
sec_user_id: '8',
is_submit: 1,
is_intime: 0,
total: 1
},
{
t_class_id: 1,
t_class_subject_id: 1,
t_class_task_id: 1,
title: 'Mengerjakan Soal',
sec_user_id: '3,5,7',
is_submit: 1,
is_intime: 1,
total: 3
}
]
2-2 [...]
3-4 [...]
Как изменить каждое общее имя ключа на другое имя ключа, используя Javascript / ES6:
ожидаемый результат только изменить общее имя ключа:
у меня всегда есть 3 объекта в каждом массиве, и я хочу изменить общий ключ каждого объекта на noSubmit, late и OnTime на основе индекса
1-1 [
{
t_class_id: 1,
t_class_subject_id: 1,
t_class_task_id: 1,
title: 'Mengerjakan Soal',
sec_user_id: '4',
is_submit: 0,
is_intime: 0,
noSubmit: 1
},
{
t_class_id: 1,
t_class_subject_id: 1,
t_class_task_id: 1,
title: 'Mengerjakan Soal',
sec_user_id: '8',
is_submit: 1,
is_intime: 0,
late: 1
},
{
t_class_id: 1,
t_class_subject_id: 1,
t_class_task_id: 1,
title: 'Mengerjakan Soal',
sec_user_id: '3,5,7',
is_submit: 1,
is_intime: 1,
onTime: 3
}
]
2-2 [...]
3-4 [...]
Как мне решить проблему?
Комментарии:
1. Я не вижу никакого кода. можете ли вы привести примеры того, что вы пробовали?
Ответ №1:
Вы не можете изменить имя свойства объекта JavaScript, вы можете только создать новое свойство и удалить старое. Вы можете сделать это на существующем объекте или создав новый объект.
Я не совсем понимаю правила изменения, о котором вы говорите, но вот простой пример:
entry.newName = entry.originalName;
delete entry.originalName;
Живой пример:
const container = {
"1-1": [
{
originalName: 1,
unrelatedProperty: "example1",
},
{
originalName: 2,
unrelatedProperty: "example2",
},
{
originalName: 3,
unrelatedProperty: "example3",
},
],
"2-2": [
{
originalName: 4,
unrelatedProperty: "example4",
},
{
originalName: 5,
unrelatedProperty: "example5",
},
{
originalName: 6,
unrelatedProperty: "example6",
},
]
};
for (const array of Object.values(container)) {
for (const entry of array) {
entry.newName = entry.originalName;
delete entry.originalName;
}
}
console.log(container);
Или путем создания новых объектов:
const {originalName, ...rest} = entry;
const newEntry = {newName: originalName, ...rest};
Живой пример:
const container = {
"1-1": [
{
originalName: 1,
unrelatedProperty: "example1",
},
{
originalName: 2,
unrelatedProperty: "example2",
},
{
originalName: 3,
unrelatedProperty: "example3",
},
],
"2-2": [
{
originalName: 4,
unrelatedProperty: "example4",
},
{
originalName: 5,
unrelatedProperty: "example5",
},
{
originalName: 6,
unrelatedProperty: "example6",
},
]
};
for (const [key, array] of Object.entries(container)) {
container[key] = array.map(({originalName, ...rest}) => ({newName: originalName, ...rest}));
}
console.log(container);
Комментарии:
1. Спасибо за ваш ответ. итак, мы можем изменить каждое свойство объекта с другим именем, как я ожидал в этом посте?
2. @MuhammadBahrijar — Я не понимаю, о чем вы там спрашиваете. Я думаю, что я был достаточно ясен выше: вы не можете изменить имя свойства. Вы можете создать новое свойство (с новым именем) и удалить другое свойство.
3. @Bahri у вас всегда есть 3 объекта в каждом массиве, и вы хотите изменить
total
ключ каждого объекта наnoSubmit
,late
иonTime
на основе их индекса?