为什么我不能为每个数组项调用此函数?

时间:2018-03-28 19:07:10

标签: javascript function

我有这两个数组,我希望通过调用函数并将结果输出到控制台,将一个函数(在这种情况下为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));

3 个答案:

答案 0 :(得分:4)

您缺少随机化函数中的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);  
}

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

此外,如果随机化未在任何地方声明,我添加了const关键字以避免创建隐式全局。

答案 2 :(得分:-1)

你缺少地图功能的回报

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