所以我有Array
个对象:
var animals = [
{ name: 'murphy brown the dog', type: 'dog', age: 4, fav_toy: 'squeaky octopus'},
{ name: 'mervin', type: 'cat', age: 1, fav_toy: 'catnip mouse'},
{ name: 'peppercorn', type: 'cat', age: 3, fav_toy: 'lady bug pillow'},
{ name: 'willa', type: 'cat', age: 4, fav_toy: 'jingle ball'},
{ name: 'rhoda', type: 'cat', age: 14, fav_toy: 'your emotions'},
{ name: 'squatch', type: 'dog', age: 4, fav_toy: 'rope toy'},
{ name: 'maya', type: 'dog', age: 15, fav_toy: 'hedgehog'},
{ name: 'sadie', type: 'dog', age: 16, fav_toy: 'paper towel roll'},
{ name: 'max', type: 'hamster', age: 1, fav_toy: 'wooden stick'}
];
我能够创建一个识别所述阵列中最老的动物的功能。
var currentAge = 0;
function oldestAnimal (list) {
for (var i = 0; i < list.length; i++) {
if (list[i].age >= currentAge){
(currentAge = list[i].age);
}
}
for (var x = 0; x < list.length; x++) {
if (list[x].age == currentAge) {
(console.log(list[x]));
}
}
}
oldestAnimal(animals);
我现在需要获取上述函数的输出,即:
{ name: 'sadie', type: 'dog', age: 16, fav_toy: 'paper towel roll'}
并使用它来创建字符串,使用name
,age
,type
和toy
属性的值。
我尝试过点符号,括号表示法和其他可能只是胡言乱语的组合。我考虑过将输出推送到一个新的Array
,但我觉得这样做会让人作弊,因为指令是取得函数返回的对象并使用它将所需的句子记录到控制台。
一次尝试是:
console.log("My name is " + oldestAnimal(animals).name);
控制台已发回:
Uncaught TypeError: Cannot read property 'name' of undefined
另一种尝试是:
console.log("My name is " + (oldestAnimal[animals.type]));
导致
My name is undefined
我觉得第二个更接近我需要的地方,但我非常感谢对此的一些帮助。
感谢。
答案 0 :(得分:4)
您的第一次尝试:
console.log("My name is " + oldestAnimal(animals).name);
......是对的......但功能错了。
您必须返回所需的值。
由于该函数没有return
语句,因此返回undefined
。
答案 1 :(得分:-1)
这是一个非常简单的任务.reduce()
,如下所示;
function getOldestOf(animals){
return animals.reduce((p,c) => p.age > c.age ? p:c);
}
var animals = [ { name: 'murphy brown the dog', type: 'dog', age: 4, fav_toy: 'squeaky octopus'},
{ name: 'mervin', type: 'cat', age: 1, fav_toy: 'catnip mouse'},
{ name: 'peppercorn', type: 'cat', age: 3, fav_toy: 'lady bug pillow'},
{ name: 'willa', type: 'cat', age: 4, fav_toy: 'jingle ball'},
{ name: 'rhoda', type: 'cat', age: 14, fav_toy: 'your emotions'},
{ name: 'squatch', type: 'dog', age: 4, fav_toy: 'rope toy'},
{ name: 'maya', type: 'dog', age: 15, fav_toy: 'hedgehog'},
{ name: 'sadie', type: 'dog', age: 16, fav_toy: 'paper towel roll'},
{ name: 'max', type: 'hamster', age: 1, fav_toy: 'wooden stick'}];
console.log("My name is " + getOldestOf(animals).name);