web-dev-qa-db-fra.com

Tableau à chaîne avec AngularJS et Lodash

J'ai un tableau ($ scope.paxlist) ressemblant à ceci:

[
   {"name":"Maria","chosen":false},
   {"name":"Jenny","chosen":false},
   {"name":"Ben","chosen":false},
   {"name":"Morris","chosen":false}
]

Je dois prendre uniquement les valeurs de name et les convertir en chaîne afin de pouvoir utiliser correctement ng-CSV. La sortie souhaitée serait quelque chose comme ceci:

$scope.var = "Maria, Jenny, Ben, Morris"

Compte tenu du fait que j'ai Angular et Lodash déjà chargés, quelqu'un pourrait-il indiquer s'il a déjà un outil pour le faire sans douleur?

19
Eric Mitjans

En utilisant natif map de javascript, vous pouvez le faire comme ci-dessous

var data = [
   {"name":"Maria","chosen":false},
   {"name":"Jenny","chosen":false},
   {"name":"Ben","chosen":false},
   {"name":"Morris","chosen":false}
];

data.map(function(obj){return obj.name;}).join(', '); // returns the expected output.

en utilisant Lodash

_.map(data,'name').join(', ')
35
Mritunjay

Lodash propose _.pluck pour extraire une propriété d'une liste d'objets:

$scope.var = _.pluck($scope.paxlist, 'name').join(', ');
5
Felix Kling

Vous pouvez utiliser _. Map ou _. Pluck , comme ceci

$scope.var = _.map($scope.paxlist, 'name').join(', ');

ou

$scope.var = _.pluck($scope.paxlist, 'name').join(', ');
4
Alexander T.

En utilisant la réponse de Mrityunjay, ceci est une autre version de la réponse pour convertir le tableau de chaîne en chaîne:

const _ = require('lodash');
const data = ['abc','xyz','123'];
const translated = _.map(data).join(', ');
console.log(`result: ${translated}`);
3
S.Mishra