【问题标题】:Why I can't call this function for each array item? [duplicate]为什么我不能为每个数组项调用此函数? [复制]
【发布时间】:2018-03-28 19:07:10
【问题描述】:

我得到了这 2 个数组,我希望通过调用函数并将结果输出到控制台来将函数(在本例中为 randomize())应用于每个数组。目前 console.log 返回 undefined

const array1 = ['I want to','You want to'];
let newArray1 = array1
            .map(item => ({value: Math.random(), item:item}))
            .sort((a,b)=> a.value-b.value)
            .map(item => item.item)
            .slice(0,1);



const array2 = [' eat',' sleep '];
let newArray2 = array2
                .map(item => ({value: Math.random(), item:item}))
                .sort((a,b)=> a.value-b.value)
                .map(item => item.item)
                .slice(0,1);


randomize = (x) =>{
  x.map(item => ({value: Math.random(), item:item}))
  .sort((a,b)=> a.value-b.value)
  .map(item => item.item)
  .slice(0,1);

}
randomize(array2);


console.log(randomize(array2));

【问题讨论】:

  • array3 定义在哪里?
  • Mark_M,我在发布后不久编辑了代码。它应该是 array2

标签: javascript function


【解决方案1】:

您的 randomize 函数中缺少 return 语句

randomize = (x) =>{
  return x.map(item => ({value: Math.random(), item:item}))
  .sort((a,b)=> a.value-b.value)
  .map(item => item.item)
  .slice(0,1);  
}

【讨论】:

    【解决方案2】:

    randomize 是一个没有返回值的箭头函数。添加 return 语句或删除花括号以将隐式 return 用于箭头函数,其主体仅包含表达式。

    const randomize = (x) => {
      return x.map(item => ({value: Math.random(), item:item}))
      .sort((a,b)=> a.value-b.value)
      .map(item => item.item)
      .slice(0,1);
    }
    

    或:

    const randomize = (x) => 
      x.map(item => ({value: Math.random(), item:item}))
      .sort((a,b)=> a.value-b.value)
      .map(item => item.item)
      .slice(0,1)
    ;
    

    另外,如果没有在任何地方声明 randomize,我添加了 const 关键字以避免创建隐式全局。

    【讨论】:

      【解决方案3】:

      你在 map 函数中缺少 return

      const array2 = ['吃','睡'];

      randomize = (x) =>{
        x.map(item => { return {value: Math.random(), item:item}})
        .sort((a,b)=> a.value-b.value)
        .map(item =>return  item.item)
        .slice(0,1);
      
      }
      
      randomize(array2);
      

      【讨论】:

      • 在 map 函数中添加不必要的返回值不会使包含函数返回值。其他提供的解决方案都是正确的。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多