2016-11-29 59 views
2

我如何才能找到javascript數組中的最短字符串與數組元素的不同數量? 我用查找數組中的最短字符串

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

,我已經導致狀陣列的3個元素之間的最短字符串。但我不想關心元素的數量

+1

你可以按長度排序。 – Gabriel

回答

4

使用Array#map創建長度的陣列,然後申請Ÿ它Math.min()

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方法。

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

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


隨着ES6 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

你可以使用Math.minArray#reduce

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));

相關問題