[javascript] 배열에서 가장 긴 문자열 찾기

string 형 배열에서 가장 긴 문자열을 찾는 짧은 방법이 있습니까?

같은 뭔가 arr.Max(x => x.Length);?



답변

사용 가능한부터 자바 스크립트 1.8 / 인 ECMAScript 5 대부분에서 사용할 수있는 이전 버전의 브라우저 :

var longest = arr.reduce(
    function (a, b) {
        return a.length > b.length ? a : b;
    }
);

그렇지 않으면 안전한 대안 :

var longest = arr.sort(
    function (a, b) {
        return b.length - a.length;
    }
)[0];


답변

이전 질문에 대한 새로운 답변 : ES6에서는 더 짧게 할 수 있습니다.

Math.max(...(x.map(el => el.length)));


답변

나는 이렇게 할 것이다

var arr = [
  'first item',
  'second item is longer than the third one',
  'third longish item'
];

var lgth = 0;
var longest;

for (var i = 0; i < arr.length; i++) {
  if (arr[i].length > lgth) {
    var lgth = arr[i].length;
    longest = arr[i];
  }
}

console.log(longest);


답변

var arr = [ 'fdgdfgdfg', 'gdfgf', 'gdfgdfhawsdgd', 'gdf', 'gdfhdfhjurvweadsd' ];
arr.sort(function (a, b) { return b.length - a.length })[0];


답변

Array.prototype 사용-(정렬은 바이올린을 연주하는 동안 @katsPaugh 및 @deceze가 게시 한 것과 유사합니다)

여기 데모

var arr = [
    "2 --",
    "3 ---",
    "4 ----",
    "1 -",
    "5 -----"
];

Array.prototype.longest=function() {
    return this.sort(
      function(a,b) {
        if (a.length > b.length) return -1;
        if (a.length < b.length) return 1;
          return 0
      }
    )[0];
}
alert(arr.longest());


답변

기능 + 재귀 접근 방식을 제공합니다. 작동 방식을 이해하려면 주석을 참조하십시오.

const input1 = ['a', 'aa', 'aaa']
const input2 = ['asdf', 'qwer', 'zxcv']
const input3 = ['asdfasdf fdasdf a sd f', ' asdfsdf', 'asdfasdfds', 'asdfsdf', 'asdfsdaf']
const input4 = ['ddd', 'dddddddd', 'dddd', 'ddddd', 'ddd', 'dd', 'd', 'd', 'dddddddddddd']

// Outputs which words has the greater length
// greatestWord :: String -> String -> String
const greatestWord = x => y =>
      x.length > y.length ? x : y

// Recursively outputs the first longest word in a series
// longestRec :: String -> [String] -> String
const longestRec = longestWord => ([ nextWord, ...words ]) =>
      //                                ^^^^^^^^^^^^
      // Destructuring lets us get the next word, and remaining ones!
      nextWord // <-- If next word is undefined, then it won't recurse.
        ? longestRec (greatestWord (nextWord) (longestWord)) (words)
        : longestWord


// Outputs the first longest word in a series
// longest :: [String] -> String
const longest = longestRec ('')

const output1 = longest (input1)
const output2 = longest (input2)
const output3 = longest (input3)
const output4 = longest (input4)

console.log ('output1: ', output1)
console.log ('output2: ', output2)
console.log ('output3: ', output3)
console.log ('output4: ', output4)


답변

나는 가장 짧은 해결책을 본다

function findLong(s){
  return Math.max.apply(null, s.split(' ').map(w => w.length));
}