给定一个混合类型数组,“getLongestWordOfMixedElements
”返回给定数组中最长的字符串。
注意:
""
)。 如何确定数组是否包含字符串,如下代码所示:
function getLongestWordOfMixedElements(arr) {
if (arr.length === 0) return ""
var max = 0
for (var i = 0; i < arr.length; i++){
if(arr[i].length > max) max = arr[i]
}
return max
}
getLongestWordOfMixedElements([3, 'word', 5, 'up', 3, 1]);
答案 0 :(得分:4)
您可以过滤数组中的字符串,然后使用 reduce 操作找到最长的
function getLongestWordOfMixedElements(arr) {
return arr
.filter(item => typeof item === 'string')
.reduce((longest, str) => str.length > longest.length ? str : longest, '');
}
console.log(getLongestWordOfMixedElements([3, 'word', 5, 'up', 3, 1]));
请注意,如果任何单词的长度相同,则返回数组中较早的单词。
此外,您可以跳过过滤器并在 reduce 中进行类型检查...
return arr.reduce((longest, str) => {
return typeof str === 'string' && str.length > longest.length ?
str : longest;
}, '')
答案 1 :(得分:0)
迭代元素并检查其类型是否为字符串。
您可以使用typeof
完成此操作。
让我们假设您将拥有大量数据,并且不希望将内存使用量增加一倍/或者为了代码中的示例:
function getLongestWordOfMixedElements(arr) {
var max = "";
if (arr.length) {
arr.forEach(function (item) {
if (typeof item === "string" && item.length > max) {
max = item;
}
});
}
return max;
}
console.log(getLongestWordOfMixedElements([3, 'word', 5, 'up', 3, 1, {foo:4}]));
在您的代码中,您可以通过以下方式进行更改:
for (var i = 0; i < arr.length; i++) {
var item = arr[i];
if (typeof item === "string" && item.length > max) {
max = arr[i];
}
}
答案 2 :(得分:0)
这是我的版本......
function getLongestWordOfMixedElements(arr) {
let result = '';
if (arr.length) {
for(i in arr) {
const value = arr[i];
if (value && typeof value === 'string' && value.length > result.length) {
result = value;
}
}
}
return result;
}
getLongestWordOfMixedElements([333333, 'word', 5, 'up', 3, 1]);