我试图在没有任何函数式编程的情况下解决以下问题。
问题:编写一个名为findShortestWordAmongMixedElements()
的函数。
给定一个数组,findShortestWordAmongMixedElements()
返回给定数组中的最短字符串。
注意:
如果有联系,它应该返回第一个出现在给定数组中的元素。
期望给定数组的值不是字符串。
如果给定的数组为空,则应返回空字符串。
如果给定的数组不包含任何字符串,则应返回空字符串。
var output = findShortestWordAmongMixedElements([4,' two',2,' three']); 的console.log(输出); // - > ' 2'
这是我到目前为止的答案:
function findShortestWordAmongMixedElements(arr) {
// your code here
var shortestString = '';
if (arr.length > 0) {
for (var i = 0; i < arr.length; i += 1) {
if (typeof arr[i] === 'string' ) {
var length = arr[i].length;
if (arr[i].length < shortestString.length) {
shortestString = arr[i];
} else {
shortestString = arr[length.indexOf(arr[i].length)];
}
}
}
}
return shortestString;
}
或者我应该这样做:
function findShortestWordAmongMixedElements(arr) {
// your code here
var shortestString = '';
if (arr.length > 0) {
for (var i = 0; i < arr.length; i += 1) {
if (typeof arr[i] === 'string' ) {
var length = arr[i].length;
if (arr[i].length < shortestString.length) {
shortestString = arr[i];
}
if (arr[i].length === shortestString.length) {
shortestString = arr[length.indexOf(arr[i].length)];
}
}
}
}
return shortestString;
}
第二个功能中没有打印出来。我的indexOf
不正确吗?
答案 0 :(得分:0)
function findShortestWordAmongMixedElements (arr) {
return arr.filter(d => typeof d == 'string').sort(d => -d.length)[0] || ''
}