Как вывести определенные элементы вложенных массивов объекта в зависимости от условия?
Функция должна в out выводить элементы name для которых age > 26.
let list = {
"iis8sj": {
"name": "Ivan",
"age": 27
},
"iiss7j": {
"name": "Petr",
"age": 26
},
"s3s8sj": {
"name": "Serg",
"age": 47
}
}
Сделал так, но выводит age (27, 47) а не name (Ivan, Serg), возможно должно быть еще второе условие чтобы выводить только строки, но не могу сообразить как поправить, подскажите пожалуйста.
function f1() {
let out = '';
for (let key in list) {
for (let item in list[key]) {
if (list[key][item] > 26) {
out += list[key][item] + ' ';
}
}
}
document.querySelector('.out').innerHTML = out;
}
Ответы (3 шт):
Автор решения: Алексей Шиманский
→ Ссылка
Второй цикл явно лишний
let list = {
"iis8sj": { "name": "Ivan", "age": 27 },
"iiss7j": { "name": "Petr", "age": 26 },
"s3s8sj": { "name": "Serg", "age": 47 }
}
function f1(list, maxAge) {
let result = [];
for (let key in list) {
if (list[key].age > maxAge) {
result.push(list[key].name);
}
}
return result;
}
console.log(f1(list, 26).join(' '));
Автор решения: CatWhite
→ Ссылка
<section>
<p><b>Task 17.</b></p>
<p> При нажатии b-17 выполняете функцию f17. Функция должна в out-17 выводить элементы name вложенных
массивов в a17 для который age > 26. Вывод через пробел.</p>
<button class="button-primary b-17">Task-17</button>
<div class="out-17"></div>
</section>
let a17 = {
iis8sj: {
name: "Ivan",
age: 27,
},
iiss7j: {
name: "Petr",
age: 26,
},
s3s8sj: {
name: "Serg",
age: 47,
},
s3s85j: {
name: "Deny",
age: 65,
},
};
function f17() {
let out = "";
for (let key in a17) {
if (a17[key].age > 26) {
out += a17[key].age + " ";
}
}
document.querySelector(".out-17").innerHTML = out;
}
document.querySelector(".b-17").onclick = f17;
Автор решения: ksa
→ Ссылка
Функция должна в out выводить элементы name для которых age > 26.
Предложу такой вариант...
let list = {
"iis8sj": {
"name": "Ivan",
"age": 27
},
"iiss7j": {
"name": "Petr",
"age": 26
},
"s3s8sj": {
"name": "Serg",
"age": 47
}
}
function f1(list) {
const a = Object.values(list).reduce((a, o) => (o.age > 26 ? [...a, o.name] : a), [])
return a.join(', ')
}
document.querySelector('.out').innerHTML = f1(list)
<p class='out'></p>