我尝试从充满不同类型原语的数组中提取最短字符串的尝试失败。我究竟做错了什么?还有其他东西吗



var bands = ([30, 'Seconds', 'to', 'Mars', 1, 'Direction', true]);

function tinyString(collection) {
var tinyStr = '';
return collection.
    filter(function (x) {
      return typeof x === 'string'
    }).
    forEach(function (y) {
        if (tinyStr > y){
          return tinyStr = y
        }
    })
}

console.log(bands); // --> 'to'

最佳答案

您可以按长度和类型进行排序,然后返回第一个



var bands = ([30, 'Seconds', 'to', 'Mars', 1, 'Direction', true]);

function tinyString(collection) {
    return collection.sort((a,b)=>typeof a === 'string' ? a.length-b.length:1).shift();
}

console.log( tinyString(bands) );

08-15 18:11