Попытка получить уведомление, чтобы показать

== выполняет контрольную проверку равенства, ссылаясь на то, что 2 объекта (строки в этом случае) относятся к одному и тому же объекту в памяти.

Метод equals() будет проверять, будет ли содержимое или состояния двух объектов одинаковы.

Очевидно, что == работает быстрее, но во многих случаях может (может) давать ложные результаты, если вы просто хотите сказать, имеет ли 2 String s тот же текст.

Определенно рекомендуется использовать метод equals().

Не беспокойтесь о производительности. Некоторые способы поощрения использования String.equals():

  1. Реализация String.equals() сначала проверяет ссылочное равенство (используя ==), и если две строки одинаковы по ссылке, дальнейший расчет Выполняется!
  2. Если 2 ссылки на строки не совпадают, String.equals() будет проверять длину строк. Это также является быстрой операцией, поскольку класс String хранит длину строки, не нужно считать символы или кодовые точки. Если длины отличаются, дальнейшая проверка не выполняется, мы знаем, что они не могут быть равными.
  3. Только если мы доберемся до этого, будет фактически сопоставлено содержимое двух строк, и это будет короткий сравнение: не все символы будут сравниваться, если мы найдем несоответствующий символ (в том же положении в 2 строках), никакие другие символы не будут проверены.

Когда все сказано и даже если у нас есть гарантия, что строки являются стажерами, использование метода equals() все еще не является издержками, которые можно было бы подумать, определенно рекомендуемым способом. Если вам нужна эффективная проверка ссылок, используйте перечисления, где гарантируется спецификацией и реализацией языка, что одно и то же значение перечисления будет одним и тем же объектом (по ссылке).

-1
задан Ghanima 11 March 2019 в 00:45
поделиться

4 ответа

Ваша проблема в том, что вам нужно объединить статические части сообщения с динамическими частями с помощью оператора +:

var highTemps = ["32", "41", "36", "29", "39", "37", "40"];
var lowTemps = ["18", "24", "20", "27", "30", "31", "27"];

var d = new Date();
var n = d.getDay();

if(n == 0){
  alert("Expect a high of " + highTemps[0] + " and a low of " + lowTemps[0] + " today.");
}else if(n == 1){
  alert ("Expect a high of" + highTemps[1] + "and a low of" + lowTemps[1] + "today.");
}else if(n == 2){
  alert("Expect a high of" + highTemps[2] + "and a low of" + lowTemps[2] + "today.");
}else if(n == 3){
  alert("Expect a high of" + highTemps[3] + "and a low of" + lowTemps[3] + "today.");
}else if(n == 4){
  alert("Expect a high of" + highTemps[4] + "and a low of" + lowTemps[4] + "today.");
}else if(n == 5){
  alert("Expect a high of" + highTemps[5] + "and a low of" + lowTemps[5] + "today.");
}else if(n == 6){
  alert("Expect a high of" + highTemps[6] + "and a low of" + lowTemps[6] + "today.");
}else {
  alert("Who knows what the temperature is?!");
};

console.log("The average temperature for this week is [average].");
console.log("The warmest day of the week will have a high temperature of [hTemperature]");
console.log("The lowest low temperature of the week will be [lTemperature].)");
[ 1111]

Теперь, сказав это, мы можем упростить ваш код, просто используя переменную n в качестве индекса для массивов и избавившись от всего этого if/then.

Кроме того, с типом if / затем у вас есть выражение switch, которое может быть более кратким:

var highTemps = ["32", "41", "36", "29", "39", "37", "40"];
var lowTemps = ["18", "24", "20", "27", "30", "31", "27"];

var d = new Date();
var n = d.getDay();

// If the array contains an index of the current day number
if(highTemps.indexOf(n) > -1){
  // Just extract that element from the arrays and use it.
  alert("Expect a high of " + highTemps[n] + " and a low of " + lowTemps[n] + " today.");
} else {
  // Otherwise, show the default message
  alert("Who knows what the temperature is?!");
}

console.log("The average temperature for this week is [average].");
console.log("The warmest day of the week will have a high temperature of [hTemperature]");
console.log("The lowest low temperature of the week will be [lTemperature].)");

0
ответ дан Scott Marcus 11 March 2019 в 00:45
поделиться

Проблема с функцией оповещения. Строковое сообщение должно быть добавлено со значением массива, используя '+'.

<script>
var highTemps = ["32", "41", "36", "29", "39", "37", "40"];
var lowTemps = ["18", "24", "20", "27", "30", "31", "27"];
var d = new Date();
var n = d.getDay();

if(n == 0){ 
   alert("Expect a high of " + highTemps[0] +" and a low of " +lowTemps[0] + " today.");

}else if(n == 1){
   alert ("Expect a high of" + highTemps[1] + "and a low of" +lowTemps[1] + "today.");

}else if(n == 2){
   alert("Expect a high of" + highTemps[2] + "and a low of" + lowTemps[2] + "today.");

}else if(n == 3){
   alert("Expect a high of" + highTemps[3] + "and a low of" + lowTemps[3] + "today.");

}else if(n == 4){
   alert("Expect a high of" + highTemps[4] + "and a low of" +lowTemps[4]+ "today.");

}else if(n == 5){
   alert("Expect a high of" + highTemps[5] + "and a low of" + lowTemps[5] + "today.");

}else if(n == 6){
   alert("Expect a high of" + highTemps[6] + "and a low of" + lowTemps[6] + "today.");

}else {
    alert("Who knows what the temperature is?!");
};


console.log("The average temperature for this week is [average].");
console.log("The warmest day of the week will have a high temperature of [hTemperature]");
console.log("The lowest low temperature of the week will be [lTemperature].)");

0
ответ дан lazydeveloper 11 March 2019 в 00:45
поделиться

В дополнение к предыдущим комментариям ваш код оканчивается на "< / script>". Между "<" есть пробел и "/".

0
ответ дан Burçin Gülen 11 March 2019 в 00:45
поделиться

Я думаю, что вашей главной проблемой является отсутствие window для window.alert, также вы можете использовать синтаксис ES6, чтобы вообще не использовать +:

const highTemps = ["32", "41", "36", "29", "39", "37", "40"];
const lowTemps = ["18", "24", "20", "27", "30", "31", "27"];
const d = new Date();
const n = d.getDay();

if(n === 0) {
  window.alert(`Expect a high of ${highTemps[0]} and a low of ${lowTemps[0]} today.`);
} else if(n === 1) {
  window.alert (`Expect a high of ${highTemps[1]} and a low of ${lowTemps[1]} today.`);
} else if(n === 2) {
  window.alert (`Expect a high of ${highTemps[2]} and a low of ${lowTemps[2]} today.`);
} else if(n === 3) {
  window.alert (`Expect a high of ${highTemps[3]} and a low of ${lowTemps[3]} today.`);
} else if(n === 4) {
  window.alert (`Expect a high of ${highTemps[4]} and a low of ${lowTemps[4]} today.`);
} else if(n === 5) {
  window.alert (`Expect a high of ${highTemps[5]} and a low of ${lowTemps[5]} today.`);
} else if(n === 6) {
  window.alert (`Expect a high of ${highTemps[6]} and a low of ${lowTemps[6]} today.`);
} else {
  alert("Who knows what the temperature is?!");
};


console.log("The average temperature for this week is [average].");
console.log("The warmest day of the week will have a high temperature of [hTemperature]");
console.log("The lowest low temperature of the week will be [lTemperature].)");

Или вы можете даже:

const highTemps = ["32", "41", "36", "29", "39", "37", "40"];
const lowTemps = ["18", "24", "20", "27", "30", "31", "27"];
const d = new Date();
const n = d.getDay();

for (let i = 0; i < highTemps.length; i++) {
  if  (n === i) {
    window.alert(`Expect a high of ${highTemps[i]} and a low of ${lowTemps[i]} today.`);  
  } 

  if (n >= 7) {
    window.alert("Who knows what the temperature is?!");
  }
}

console.log("The average temperature for this week is [average].");
console.log("The warmest day of the week will have a high temperature of [hTemperature]");
console.log("The lowest low temperature of the week will be [lTemperature].)");

0
ответ дан Alberto Perez 11 March 2019 в 00:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: