how can I get a new array consisting of name, for example ["dima", "Anna", "Denis"], and a separate array from lang ["javascript", "php", "html", "css", "python", " ruby "], tried through reduce But apparently I am making a mistake because of which it does not work

function ready() { var employee = [ { name: "Dima", lang: ["javascript", "php"], age: 21 }, { name: "Anna", lang: ["html", "css"], age: 26 }, { name: "Denis", lang: ["python", "ruby"], age: 18 } ]; } document.addEventListener("DOMContentLoaded", ready); 

    1 answer 1

    The first method is newer.

     var employee = [{ name: "Dima", lang: ["javascript", "php"], age: 21 }, { name: "Anna", lang: ["html", "css"], age: 26 }, { name: "Denis", lang: ["python", "ruby"], age: 18 } ]; var names = employee.filter(m => m.age > 19).map(m => m.name); console.log(names); var langs = employee.reduce((res, m) => res.concat(m.lang), []); console.log(langs); 

    The second way is old school.

     var employee = [{ name: "Dima", lang: ["javascript", "php"], age: 21 }, { name: "Anna", lang: ["html", "css"], age: 26 }, { name: "Denis", lang: ["python", "ruby"], age: 18 } ]; var names = []; var langs = []; for (var i = 0; i < employee.length; i++) { var empl = employee[i]; empl.age > 19 && names.push(empl.name); langs = langs.concat(empl.lang); } console.log(names); console.log(langs);