gpt4 book ai didi

javascript - 在javascript中展平数组以获得最长的字符串

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:25:06 25 4
gpt4 key购买 nike

我正在尝试将输入中的数组展平,并返回最长的字符串。

例如给定输入:

i = ['big',[0,1,2,3,4],'tiny'] 

该函数应返回'tiny'。我想使用 reduceconcat以原生和优雅的方式解决这个问题(没有实现 flatten prototype in array )但我失败了这段代码:

function longestStr(i) 
{
// It will be an array like (['big',[0,1,2,3,4],'tiny'])
// and the function should return the longest string in the array

// This should flatten an array of arrays
var r = i.reduce(function(a, b)
{
return a.concat(b);
});

// This should fetch the longest in the flattened array
return r.reduce(function (a, b)
{
return a.length > b.length ? a : b;
});
}

最佳答案

您的问题是您忘记将 initialValue 参数传递给 reduce函数,在本例中它必须是一个数组。

var r = i.reduce(function(a, b) {
return a.concat(b);
}, []);

如果不提供initialValue,第一次调用的a值将是i数组中的第一个元素,即字符串 在你的情况下,所以你将调用 String.prototype.concat 函数而不是 Array.prototype.concat

这意味着最后,r 是一个字符串,并且字符串没有reduce 函数。

但是您的解决方案可以简化:

['big',[0,1,2,3],'tiny'].reduce(function longest(a, b) {
b = Array.isArray(b)? b.reduce(longest, '') : b;
return b.length > a.length? b : a;
}, '');

关于javascript - 在javascript中展平数组以获得最长的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19171446/

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