Я бы хотел что-то 5 + 6вернуть "56"вместо 11.
Я бы хотел что-то 5 + 6вернуть "56"вместо 11.
Ответы:
Используйте "" + 5 + 6для принуждения к струнам. Это также работает с числовыми переменными:
var a = 5;
var b = 6;
console.log("" + a + b);
const numbersAsString = `${5}${6}`;
var value = "" + 5 + 6;
alert(value);
Теперь вы можете использовать литералы шаблонов ES6 .
const numbersAsString = `${5}${6}`;
console.log(numbersAsString); // Outputs 56
Или, если у вас есть переменные:
const someNumber = 5;
const someOtherNumber = 6;
const numbersAsString = `${someNumber}${someOtherNumber}`;
console.log(numbersAsString); // Outputs 56
Лично мне новый синтаксис кажется более ясным, хотя и немного более подробным.
просто используйте:
5 + "" + 6
простой ответ:
5 + '' + 6;
Использовать
var value = "" + 5 + 6;
заставить его к струнам.
Я знаю, что это старый пост, на который много раз отвечали. Мне тоже было интересно, есть ли в JavaScript функция, которая бы это сделала. Я занимался математическим программированием, и мне нужно было соединить два числа.
Итак, что, если мне нужно было объединить два числа 17 и 29. Конечно, я могу превратить их в строки и объединить их, а затем снова превратить новую строку в число. Кажется, это работает очень хорошо, и я могу продолжить свой код, но давайте взглянем сюда и попытаемся выяснить, что здесь на самом деле происходит.
Что мы делаем с этими двумя числами, как нам взять 17 и 29 и превратить их в одну тысячу семьсот двадцать девять? Мы можем умножить 17 на 100, а затем добавить 29. А как насчет 172 и 293, чтобы получить сто семьдесят две тысячи двести девяносто три? Умножьте 172 на 1000 и прибавьте 293. А как насчет 2 и 9? Умножьте 2 на 10, затем прибавьте 9, чтобы получить 29.
Надеюсь, к настоящему моменту вам станет очевидна закономерность. Мы можем придумать математическую формулу, которая будет делать это за нас, а не просто использовать строки. Чтобы объединить любые два числа, a и b, нам нужно возвести произведение a и 10 в степень длины b, а затем добавить b.
Итак, как нам получить длину числа b? Что ж, мы могли бы превратить b в строку и получить ее свойство length.
a * Math.pow(10, new String(b).length) + b;
Но должен быть лучший способ сделать это без строк, верно? Да, есть.
Для любых двух чисел, a и b, с любым основанием B. Мы собираемся умножить a на основание B в степени длины b (используя логарифмическую основу b, затем настил его, чтобы получить ближайшее целое число, а затем прибавив к нему 1) затем добавив b.
Итак, теперь наш код выглядит так:
a * Math.pow(10, Math.floor(Math.log10(b)) + 1) + b;
Но подождите, а что, если бы я хотел сделать это по базе 2 или 8? Как я могу это сделать? Мы не можем использовать нашу формулу, которую мы только что создали, с любой другой базой, кроме базы 10. Объект JavaScript Math уже имеет встроенные функции для базы 10 и 2 (только Math.log), но как получить функции журнала для любого другая база? Разделим журнал числа b на журнал базы.Math.log(b) / Math.log(base).
Итак, теперь у нас есть полностью функционирующий математический код для объединения двух чисел:
function concatenate(a, b, base) {
return a * Math.pow(base, Math.floor(Math.log(b) / Math.log(base)) + 1) + b;
}
var a = 17, var b = 29;
var concatenatedNumber = concatenate(a, b, 10);
// concatenatedNumber = 1729
Если бы вы знали, что собираетесь выполнять математику только с основанием 10, вы могли бы добавить проверку, что base is undefined, а затем установить base = 10:
function concatenate(a, b, base) {
if(typeof base == 'undefined') {
base = 10;
}
return a * Math.pow(base, Math.floor(Math.log(b) / Math.log(base)) + 1) + b;
}
var a = 17, b = 29;
var newNumber = concatenate(a, b); // notice I did not use the base argument
// newNumber = 1729
Чтобы мне было проще, я использовал прототип, чтобы добавить функцию к объекту Number:
Number.prototype.concatenate = function(b, base) {
if(typeof base == 'undefined') {
base = 10;
}
return this * Math.pow(base, Math.floor(Math.log(b) / Math.log(base)) + 1) + b;
};
var a = 17;
var newNumber = a.concatenate(29);
// newNumber = 1729
Вы также можете использовать toStringфункцию для преобразования его в строку и объединения.
var a = 5;
var b = 6;
var value = a.toString() + b.toString();
enter code here
var a = 9821099923;
var b = 91;
alert ("" + b + a);
// after concating , result is 919821099923 but its is now converted
into string
console.log(Number.isInteger("" + b + a)) // false
you have to do something like below:-
var c= parseInt("" + b + a)
console.log(c); // 919821099923
console.log(Number.isInteger(c)) // true
Это самый простой способ сделать это
var value=5+""+6;
Я преобразовал обратно в число вот так ..
const timeNow = '' + 12 + 45;
const openTime = parseInt(timeNow, 10);
выход 1245
-- редактировать --
Прости,
для меня это все еще не сработало после тестирования. Мне пришлось добавить недостающий ноль обратно, поскольку он удалялся для чисел меньше 10, я использую для того, чтобы разрешить запуск кода в определенное время. Может быть некорректным, но, похоже, работает (пока).
h = new Date().getHours();
m = new Date().getMinutes();
isOpen: boolean;
timeNow = (this.m < 10) ? '' + this.h + 0 + this.m : '' + this.h + this.m;
openTime = parseInt(this.timeNow);
closed() {
(this.openTime >= 1450 && this.openTime <= 1830) ? this.isOpen = true :
this.isOpen = false;
(this.openTime >= 715 && this.openTime <= 915) ? this.isOpen = true :
this.isOpen = false;
}
Голосование вниз было приятным, спасибо :)
Я новичок в этом и пришел сюда, чтобы узнать от вас, ребята, объяснение того, почему это было бы хорошо.
В любом случае обновил свой код, чтобы показать, как я исправил свою проблему, поскольку этот пост помог мне разобраться.
Я бы предпочел concatспособ:
const numVar1 = 5;
const numVar2 = 6;
const value = "".concat(numVar1, numVar2);
// or directly with values
const value2 = "".concat(5, 6);
Вы также можете использовать массив, который может помочь в некоторых случаях использования:
const value3 = [5, 6, numVar1].join('');
Чтобы добавить ко всем ответам выше, я хочу поделиться фоновой логикой:
Plus - это оператор сложения, который также используется для конкатенации строк. Когда мы хотим объединить числа. Следует понимать, что мы хотим объединить строки, поскольку объединение чисел не дает мне подходящих вариантов использования.
Мы можем добиться этого несколькими способами,
Сквозное преобразование типа
let a = 5;
a.toString()+5 // Output 55 type "string"
Это также будет работать и выполнять преобразование типов в фоновом режиме,
5 +""+ 5 // Output 55 type "string"
Если вы решили объединить две строки и тип вывода должен быть int, здесь работает parseInt ()
parseInt(5 +""+ 5) //Output 55 Type "number"