#javascript #node.js #arrays #javascript-objects
Вопрос:
У меня есть ответ api, который выглядит так:
"payload": {
"paragraph": {
"id": 2692,
"words": [
{
"id": 21679,
"position": 2,
"translation": {
"text": "something",
"language_name": "english"
},
"transliteration": {
"text": "another",
"language_name": "english"
}
},
{
"id": 21671,
"position": 1,
"translation": {
"text": "Then",
"language_name": "english"
},
"transliteration": {
"text": "fa",
"language_name": "english"
}
},
...
]
}
}
Как я могу построить предложение из translation
ключа на основе position
ключа. Например, ожидаемый результат должен быть таким объектом, как:
{line: "Then something"}
Комментарии:
1. можете ли вы также показать полный ожидаемый объект
Ответ №1:
Прежде всего, вам нужно отсортировать свои positions
, а затем вы можете присоединиться к ним, используя карту, как показано ниже.
let words = [
{
"id": 21679,
"position": 2,
"translation": {
"text": "something",
"language_name": "english"
},
"transliteration": {
"text": "another",
"language_name": "english"
}
},
{
"id": 21671,
"position": 1,
"translation": {
"text": "Then",
"language_name": "english"
},
"transliteration": {
"text": "fa",
"language_name": "english"
}
}
]
let word = words
.sort((a, b) => a.position - b.position)
.reduce((word, w) => `${word} ${w.translation.text}`, "");
console.log(word)
Комментарии:
1. Спасибо! это было полезно. (Будет отклонено, как только я пересеку 15 повторений 🙂 )
2. Рад, что это было полезно для вас :). Также, пожалуйста, отметьте это как ответ, который мог бы меня вдохновить!
3. не используйте
map
в таких случаях , используйтеreduce
вместо этого