Tengo una serie de objetos de (countries) y estoy tratando de obtener solo una serie de nombres de String , así que a partir de este ejemplo: 
Solo: ['Canada', 'USA', ..] etc.
Estoy tratando de hacer esto con
const getNames = (countries) => countries.map(({ Name }) => Name);pero parece que no puedo conseguirlo. ¿Alguna sugerencia?
¿Sólo esta?
const getNames = countries.map(c => c.Name);Si bien el tema dice "sin" bucle, en realidad no puedes. El método de mapa también crea un algoritmo de bucle interno. Entonces, básicamente, puedes hacer algo muy simple y realmente eficiente como el bucle for estándar.
// Array of objects const arr = [ { id: 1, Name: "Canada", isSelected: false }, { id: 2, Name: "USA", isSelected: false }, { id: 3, Name: "India", isSelected: false } ]; // Function to get all params by name const getAllParam = (arr, param, res = []) => { for(const e of arr) if(e[param]) res.push(e[param]); return res; }; // Get all params with "Name" key const res = getAllParam(arr, "Name"); // Test console.log(res);Estás bastante cerca de hacerlo bien; simplemente elimine (countries) => y listo.
const getNames = countries.map(({ Name }) => Name); Alternativamente, puede conservar su código, que es una función. Para obtener los nombres de los países - coNames - llame a la función y pase los countries como parámetro.
const getNames = (countries) => countries.map(({ Name }) => Name); const countries = [{id: ...., Name:.........}]; const coNames = getNames( countries );Su código es equivalente a:
const getNames = function( countries ) { return countries.map(function({Name}) { return Name; }); };