2016-11-29 16 views
2

どのように配列要素の数が異なるjavascript配列の中で最短の文字列を見つけることができますか? Iは配列の中で最短の文字列を見つける

var min = Math.min(arr[0].length,arr[1].length,arr[2].length); 

を使用し、私は、配列の3元素間の最短の文字列のように生じています。しかし、私は要素の数を気にしたくありません

+1

あなたは長さによって並べ替えることができます。 – Gabriel

答えて

4

var arr = ["aaaa", "aa", "aa", "aaaaa", "a", "aaaaaaaa"]; 
 

 
console.log(
 
    arr.reduce(function(a, b) { 
 
    return a.length <= b.length ? a : b; 
 
    }) 
 
)


Math.min()にyのそれ:

var arr = ['cats', 'giants', 'daughters', 'ice']; 
 
var min = Math.min.apply(Math, arr.map(function(str) { return str.length; })); 
 
console.log(min);

それともES6のarray spreadと矢印機能を使用します。

var arr = ['cats', 'giants', 'daughters', 'ice']; 
 
var min = Math.min(...arr.map(({ length }) => length)); 
 
console.log(min);

+0

しかし、最短の文字列は見つかりません。あなたは最短の弦の長さを見つけます。OPがあなたの答えを受け入れたにもかかわらず、答えはまだ解決されていないと私は信じています。 – Redu

+0

問題は質問の表現にあります。 opのコードを見てください。 –

5

Array#reduceメソッドを使用してください。 APPLその後長さの配列を作成し、使用するArray#mapES6 arrow function

var arr = ["aaaa", "aa", "aa", "aaaaa", "a", "aaaaaaaa"]; 
 

 
console.log(
 
    arr.reduce((a, b) => a.length <= b.length ? a : b) 
 
)

2

あなたはArray.prototype.reduce

を使用することができます

const arr = ['small', 'big', 'yuge'] 
 

 
const shorter = (left, right) => left.length <= right.length ? left : right 
 

 
console.log(
 
    arr.reduce(shorter) 
 
)

+0

これは良い答えです.. – Redu

0

あなたはArray#reduceMath.minを使用することができます。

var arr = ["aaaa", "aa", "aa", "aaaaa", "a", "aaaaaaaa"]; 
 

 
console.log(
 
    arr.reduce(function(r, a) { 
 
    return Math.min(r, a.length); 
 
    }, Infinity) 
 
);

ES6

var arr = ["aaaa", "aa", "aa", "aaaaa", "a", "aaaaaaaa"]; 
 

 
console.log(arr.reduce((r, a) => Math.min(r, a.length), Infinity));

関連する問題