作为字符串的一部分,使用作为函数输出返回的对象

时间:2017-02-28 20:09:52

标签: javascript arrays function

所以我有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'}

并使用它来创建字符串,使用nameagetypetoy属性的值。

我尝试过点符号,括号表示法和其他可能只是胡言乱语的组合。我考虑过将输出推送到一个新的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

我觉得第二个更接近我需要的地方,但我非常感谢对此的一些帮助。

感谢。

2 个答案:

答案 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);

相关问题