Wie erreiche ich isBoatOwner
, damit ich den Wert in einem Array zurückgeben kann?
Mein Code gibt undefined
zurück.
pluck(
[
{ name: "Tim", isBoatOwner: true },
{ name: "Matt", isBoatOwner: false },
{ name: "Elie" }
],
"isBoatOwner"
);
function pluck(defObj, key) {
let arr = [];
for (let i = 0; i < defObj.length; i++) {
if (Object.keys(defObj[i]) == key) {
arr.push(defObj[i][key]);
} else {
arr.push(undefined);
}
}
return arr.flat();
}
-1
Jonas Chan
18 Aug. 2020 im 23:22
2 Antworten
Beste Antwort
In Ihrem Code versuchen Sie, ein Array mit einer Zeichenfolge zu vergleichen, um festzustellen, ob die Eigenschaft vorhanden ist. Das wird niemals passen
function pluck(defObj, key) {
let arr = [];
for (let i = 0; i < defObj.length; i++) {
// if (Object.keys(defObj[i]) == key) {
if (defObj[i][key] !== undefined) {
arr.push(defObj[i][key]);
} else {
arr.push(undefined);
}
}
return arr.flat();
}
var result = pluck(
[{
name: "Tim",
isBoatOwner: true
},
{
name: "Matt",
isBoatOwner: false
},
{
name: "Elie"
}
],
"isBoatOwner"
);
console.log(result);
Aber die Prüfung macht nicht allzu viel Sinn, da Sie undefiniert hineinschieben. So könnte es einfach sein
function pluck(defObj, key) {
let arr = [];
for (let i = 0; i < defObj.length; i++) {
arr.push(defObj[i][key]);
}
return arr.flat();
}
var result = pluck(
[{
name: "Tim",
isBoatOwner: true
},
{
name: "Matt",
isBoatOwner: false
},
{
name: "Elie"
}
],
"isBoatOwner"
);
console.log(result);
Moderner Ansatz ist nur Karte
function pluck(defObj, key) {
// return defObj.map(function(item) { return item[key]; });
return defObj.map(item => item[key]);
}
var result = pluck(
[{
name: "Tim",
isBoatOwner: true
},
{
name: "Matt",
isBoatOwner: false
},
{
name: "Elie"
}
],
"isBoatOwner"
);
console.log(result);
0
epascarello
18 Aug. 2020 im 20:31
Alles was Sie brauchen ist ein einfaches .map()
:
console.log(pluck(
[
{ name: "Tim", isBoatOwner: true },
{ name: "Matt", isBoatOwner: false },
{ name: "Elie" }
],
"isBoatOwner"
));
function pluck(defObj, key) {
return defObj.map(function (obj) {
return obj[key];
});
}
Die obige Funktion sammelt also alle Werte von isBoatOwner
aus dem Array und sendet sie als Array von Werten.
[
true,
false,
undefined
]
1
Praveen Kumar Purushothaman
18 Aug. 2020 im 20:25