gpt4 book ai didi

Javascript reduce - 在多个变量中拆分累加器

转载 作者:行者123 更新时间:2023-11-30 20:14:49 26 4
gpt4 key购买 nike

为什么 t 在第二次迭代中变成了 undefined

function findShortest(s){
const arr = s.split(' ');

arr.reduce(([acc, t], curr, idx) => {
console.log('t', t)

if (curr.length < t.length) {
// some code
t = curr;
} else {
// some code
}
return acc;
}, [[], '']);

return arr;

}

console.log(findShortest('how are you doing this wonderfull coding man'));

我尝试在一次迭代中从数组中过滤出最短的单词,因此我不需要循环数组来获取最短的单词然后再次过滤它。你可以看到我的第一次尝试是什么。我最终得到了这个:

 const arr = s.split(' ');

let shortest = 50;

return arr.reduce((acc, curr) => {
if (curr.length < shortest) {
acc = [];
acc.push(curr);
shortest = curr.length;
} else if (curr.length === shortest) {
acc.push(curr);
}
return acc;
}, []);

但为什么在第一种方法中 t 未定义?

最佳答案

您可以将数组作为结果集并检查第一个收集到的字符串的长度。开始时检查累加器是否存在。

function findShortest(s) {
return s
.split(' ')
.reduce((acc, curr) => {
if (!acc || curr.length < acc[0].length) {
return [curr];
}
if (curr.length === acc[0].length) {
acc.push(curr);
}
return acc;
}, undefined);
}

console.log(findShortest('how are you doing this wonderfull coding man'));

关于Javascript reduce - 在多个变量中拆分累加器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52027207/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com