2015-06-18 2 views
4

Я создал функцию, которая будет проверять, является ли данный параметр квадратным числом.Каков наилучший способ в JavaScript проверить, является ли данный параметр квадратным числом?

Читайте о квадратных числах здесь: https://en.wikipedia.org/?title=Square_number

Если число является квадратом числа, оно возвращает истинное и в противном случае ложных. Отрицательные числа также возвращаются false.

Примеры:

isSquare(-12) // => false 
isSquare(5) // => false 
isSquare(9) // => true 
isSquare(25) // => true 
isSquare(27) // => false 

Прямо сейчас, я использую этот метод: http://jsfiddle.net/marcusdei/ujtc82dq/5/

Но есть более короткий более уборщик способ получить работу?

+0

Что именно не так с ссылочного метода ? Не идет намного короче, чем это ... (и это довольно чисто тоже IMO) – Daniel

+0

да, я просто нахожу, что это еще короче, не уверен в том, что касается более чистого: http://jsfiddle.net/marcusdei/ujtc82dq/7/ – mdarmanin

ответ

21

Попробуйте это:

var isSquare = function (n) { 
    return n > 0 && Math.sqrt(n) % 1 === 0; 
}; 
  1. Проверьте, если число положительное
  2. Проверьте sqrt является полным номером т.е. integer

Demo

+1

Не думаю, что вам нужно проверить, есть ли значение> 0. Также 0 является технически квадратным числом. В вашем случае это будет равно false. – mpn

+0

@mpn Для '0' как идеального квадрата, вы правы. Для отрицательных чисел один вызов функции может быть сохранен. – Tushar

Смежные вопросы