首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数调用其他函数练习我被难住了

函数调用其他函数练习我被难住了
EN

Stack Overflow用户
提问于 2019-10-15 14:34:41
回答 3查看 61关注 0票数 0

这是我第一次在这里发布帖子,我在11月参加了一个为期6个月的全栈新兵训练营,但在准备工作时遇到了障碍。

我正在做一些关于repl.it的练习,这一个是关于javascript函数的。您需要编写3个函数,分别称为mealMaker、slice和cook.

你得到了一个空数组,并被告知用如下所示的对象填充它:

代码语言:javascript
复制
const arrayOfFoodObjects = [
  {
   "food": "beef",
   "type": "meat"
  },
  {
   "food": "zucchini",
   "type": "vegetable"
  },
  {
   "food": "bacon",
   "type": "meat"
  },
  {
   "food": "okra",
   "type": "vegetable"
  }
];

他们希望您让Cooked函数获取所有具有"type":“肉”的对象,并返回一个字符串,该字符串表示“已煮熟的(”食物“:值)”(例如“煮熟的牛肉”)和类似的切片函数“类型”:“蔬菜”他们想要“(”食物“:价值)切片”(例如"Okra切片“)。

然后,mealMaker函数获取这些函数输出的内容并创建一个数组,如下所示:“熟牛肉”,"Okra slices“……

我陷入困境的地方是,我编写了一个.filter()函数,它只返回那些对象的过滤数组,我很快意识到这些对象并不能达到它的目的。我猜我正在试图弄清楚如何编写一个函数,这样我就可以分别过滤肉类和蔬菜,然后让它们输出所需的字符串。

让我迷惑不解的是,在使用"type“值过滤之后,如何定位”食物“值并将其插入到某个字符串中。

这是我到目前为止所写的其余代码,可能会有帮助,也可能没有帮助。

代码语言:javascript
复制
var redMeat = arrayOfFoodObjects.filter(function(cook) {
      return cook.type == "meat";
});


var veggies = arrayOfFoodObjects.filter(function(slice) {
      return slice.type == "vegetable";
});

console.log(veggies, redMeat)

控制台看起来就像:

代码语言:javascript
复制
[ { food: 'zucchini', type: 'vegetable' },
  { food: 'okra', type: 'vegetable' } ] [ { food: 'beef', type: 'meat' },
  { food: 'bacon', type: 'meat' } ]

我可能没有以正确的方式解决这个问题,因为我花了大量的时间尝试我在Google上找到的不同的东西,并尽可能地应用它们,但这是我设法获得的最接近的东西。非常感谢您的帮助,谢谢。

另外,我不是非常熟悉这种格式的函数,因为我是通过在谷歌上搜索得出这个格式的。如果有人不介意解释这可能与我习惯看到的函数格式有何不同,那就太棒了。我不确定它的哪一部分是函数的“名称”。到目前为止,我使用的函数通常如下所示:

代码语言:javascript
复制
function nameOfFunction(value(s)) {
     *action*;
}
EN

回答 3

Stack Overflow用户

发布于 2019-10-15 15:07:02

你没有按他们的要求去做。他们想要一个cook函数和一个slice函数:

代码语言:javascript
复制
function cook(arr){
    //for each element of the array, return its mapped value (they ask a string)
    return arr.map( function(foodObject){
        return `Cooked ${foodObject.food}`
    })
}
function slice(arr){
    //do it
}
let cooks = cook(arrayOfFoodObjects)
let slices = slice(arrayOfFoodObjects)

然后将函数输出的内容提供给mealMaker (按照说明):

代码语言:javascript
复制
function mealMaker(cooks, slices){
    return cooks.map( function(cook, idxCook){
        let slice = slices[idxCook];
        //guess what to do with cook and slice
    })
}
mealMaker(cooks, slices)
票数 1
EN

Stack Overflow用户

发布于 2019-10-15 15:17:18

我认为这几行中的某些内容是需要的:

代码语言:javascript
复制
const cook = product => "cooked " + product.food;
const slice = product => product.food + " slices";

const mealMaker = (products) => {
  const meatProducts = products.filter(product => product.type === "meat");
  const veggieProducts = products.filter(product => product.type === "vegetable");
  return [
    ...cook(meatProducts),
    ...slice(veggieProducts)
  ];
}

mealMaker(arrayOfFoodObjects);

请注意用于编写函数的胖箭头语法。here on Mozilla解释了它与常规函数的不同之处。

票数 0
EN

Stack Overflow用户

发布于 2019-10-15 15:53:02

欢迎使用holdenprkr!

我认为你在正确的轨道上!现在,我们有一种方法来获取蔬菜的数组,以及另一个用于肉类的数组:

代码语言:javascript
复制
var redMeat = arrayOfFoodObjects.filter(function(cook) {
    return cook.type == "meat";
});


var veggies = arrayOfFoodObjects.filter(function(slice) {
    return slice.type == "vegetable";
});

到目前为止一切都很好,现在我们需要一个烹调函数,它接受我们的readMeat数组,并将它转换为一个字符串数组。所以,下面的内容如下:

代码语言:javascript
复制
function cook(readMeatsArray) {
    // convert readMeatsArray to cookedMeatsArray
    // [{'food': 'beef', 'type': 'meat'}, ...]
    // to
    // ['Cooked beef', ...]
}

然后是蔬菜的切片函数

代码语言:javascript
复制
function slice(veggiesArray) {
    // convert veggiesArray to slicedVeggiesArray
    // [{'food': 'okra', 'type': 'vegetable'}, ...]
    // to
    // ['Okra slices', ...]
}

因此,如果我们在一个mealMaker function中组合它,我们现在有:

代码语言:javascript
复制
function mealMaker() {
    // First we get our arrays
    var redMeat = arrayOfFoodObjects.filter(function(cook) {
         return cook.type == "meat";
    });

    var veggies = arrayOfFoodObjects.filter(function(slice) {
        return slice.type == "vegetable";
    });

    // Then we convert our object arrays to string arrays
    var cookedMeats = cook(redMeat);
    var slicedVeggies = slice(veggies);

    // Now we combine the resulting arrays and return it
    var mealArray = cookedMeats.concat(slicedVeggies);

    return mealArray;
}

这将是一种方法,希望它能有所帮助。

PD:我故意把函数cookslice留空,你可以从user753642的回答中得到一些启发;)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58388534

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档