395 Stimmen

Führen Sie .join auf Wert in Array von Objekten aus

Wenn ich ein Array von Zeichenfolgen habe, kann ich die .join() Methode verwenden, um eine einzelne Zeichenfolge zu erhalten, wobei jedes Element durch Kommas getrennt ist, wie folgt:

["Joe", "Kevin", "Peter"].join(", ") // => "Joe, Kevin, Peter"

Ich habe ein Array von Objekten und möchte eine ähnliche Operation auf einem darin enthaltenen Wert durchführen; also aus

[
  {name: "Joe", age: 22},
  {name: "Kevin", age: 24},
  {name: "Peter", age: 21}
]

führen Sie die join Methode nur auf dem name Attribut aus, um das gleiche Ergebnis wie zuvor zu erzielen.

Derzeit habe ich die folgende Funktion:

function joinObj(a, attr){
  var out = [];

  for (var i = 0; i < a.length; i++){
    out.push(a[i][attr]);
  }

  return out.join(", ");
}

An diesem Code ist nichts auszusetzen, er funktioniert, aber plötzlich bin ich von einer einfachen, prägnanten Codezeile zu einer sehr imperativen Funktion übergegangen. Gibt es einen prägnanteren, idealerweise funktionaleren Weg, um dies zu schreiben?

0voto

SAWA4D Punkte 21

Sie können in ein Array konvertieren, um den Objektnamen zu erhalten

var objs = [
      {name: "Joe", age: 22},
      {name: "Kevin", age: 24},
      {name: "Peter", age: 21}
    ];
document.body.innerHTML = Object.values(objs).map(function(obj){
   return obj.name;
});

0voto

CHEKINI Hakima Punkte 31

Dies hat für mich funktioniert:

var users = [
      {name: "Joe", age: 22},
      {name: "Kevin", age: 24},
      {name: "Peter", age: 21}
    ]

 return users.map((user: { name: string; }) => user.name).join(", ");

-1voto

haripds Punkte 109

Versuchen Sie das

var x= [
  {name: "Joe", age: 22},
  {name: "Kevin", age: 24},
  {name: "Peter", age: 21}
]

function joinObj(a, attr) {
  var out = []; 
  for (var i=0; i "Joe, Kevin, Peter"
var y = joinObj(x,'age');
y > "22, 24, 21"

-1voto

JPMC Punkte 1

Einfachster Weg:

 const oldArrayOfObjects = [
{name: "Bob", age: 40}, 
{name: "Andrew", age: 25}, 
{name: "Peter", age: 30}]; 
const newArrayOfStringNames = oldArrayOfObjects.map((OA) => OA.name); 
const newArrayOfAges = oldArrayOfObjects.map((OA) => OA.age); 
console.log({newArrayOfStringNames, newArrayOfAges})

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X