#javascript #node.js #object
#javascript #node.js #объект
Вопрос:
Кто-нибудь может помочь мне с этим объектом? Я собираюсь получить такой объект:
NewImage: {
sourceId: {
S: "some_string"
},
ignored: {
BOOL: false
},
stepFunctionArn: {
S: "some_string"
},
certificate: {
BOOL: true
},
infoNeeded: {
L: [
"Array"
]
},
queuesLinks: {
M: [
"Object"
]
},
}
Как я могу удалить эти «S», «BOOL» перед каждым значением? Мне нужен такой объект:
NewImage: {
sourceId: "some_string",
ignored: false,
stepFunctionArn: "some_string"
...
}
Мне нужно создать функцию, которая преобразует этот объект, как я объяснил выше.
Есть идеи?
Спасибо за помощь 🙂
Комментарии:
1. у вас есть только одно свойство в большинстве вложенных объектов?
2. Похоже, что queuesLinks должен быть преобразован в объект, но для этого потребуются некоторые имена свойств для значений. Что не так с использованием обычного JSON, похоже, кто-то пытался изобрести его заново.
3. это ответ потока dynamodb.
Ответ №1:
Просто возьмите значения из вложенных объектов.
const
data = { sourceId: { S: "some_string" }, ignored: { BOOL: false }, stepFunctionArn: { S: "some_string" }, certificate: { BOOL: true }, infoNeeded: { L: ["Array"] }, queuesLinks: { M: ["Object"] } },
result = Object.fromEntries(Object
.entries(data)
.map(([k, o]) => [k, Object.values(o)[0]])
);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
Комментарии:
1. Пожалуйста, не могли бы вы объяснить, что происходит в строке .map()?
2. он принимает записи как пары ключ-значение и возвращает новый массив с ключом и первым значением из вложенного объекта.
3. Спасибо! Теперь это имеет смысл для меня.
Ответ №2:
Вы можете сделать это
Object.keys(NewImage).forEach(key=>{
NewImage[key]=NewImage[key][Object.keys(NewImage[key])[0]];
});
console.log(NewImage);
Ответ №3:
Если вам нужен новый объект с указанной структурой, вы можете попробовать это:
const newObj = Object.keys(NewImage).reduce((curr, next) => {
const key = Object.keys(NewImage[next])[0];
curr[next] = NewImage[next][key];
return curr;
}, {})
Ответ №4:
Это другой подход, использующий метод уменьшения!
const data = {
sourceId: {
S: "some_string"
},
ignored: {
BOOL: false
},
stepFunctionArn: {
S: "some_string"
},
certificate: {
BOOL: true
},
infoNeeded: {
L: [
"Array"
]
},
queuesLinks: {
M: [
"Object"
]
},
};
const newObject = Object.entries(data).reduce(function(accumulator, currentValue) {
accumulator[currentValue[0]] = Object.values(currentValue[1])[0];
return accumulator;
}, {});
console.log(newObject)