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