我试图将变量determineHour与数组stationRentalsHours进行比较,每当变量等于stationRentalsHours元素时,我想将该元素添加到另一个数组(stationRentalsHoursTemp),但只有匹配的值。我尝试使用简单的运算符,但这并没有将任何内容放入临时数组中。我也尝试过使用JQuery $ .inArray,但这给了我一些奇怪的结果,等于原始数组中的结果。是否还有其他方法可以将变量与数组进行比较?
感谢您的帮助。
function updateChart() {
if(canvas3){canvas3.destroy();}
var determineHour = selectNumber.options[selectNumber.selectedIndex].innerHTML;
for (var i = 0; i < stationRentalsHours.length; i++) {
/*if(determineHour == stationRentalsHours){
stationRentalsHoursTemp.push(stationRentalsHours[i]);*/
if( $.inArray(determineHour, stationRentalsHours[i])){
stationRentalsHoursTemp.push(stationRentalsHours[i]);
}
}
答案 0 :(得分:0)
而不是
if( $.inArray(determineHour, stationRentalsHours[i])){
尝试
if( $.inArray(determineHour, stationRentalsHours) != -1){
答案 1 :(得分:0)
您注释掉的代码会对if
条件稍作修改。您的原始条件是将字符串与数组进行比较,而不是将该数组中的单个元素进行比较:
function updateChart() {
if(canvas3){
canvas3.destroy();
}
var determineHour = selectNumber.options[selectNumber.selectedIndex].innerHTML;
for (var i = 0; i < stationRentalsHours.length; i++){
if(determineHour == stationRentalsHours[i]){
stationRentalsHoursTemp.push(stationRentalsHours[i]);
}
}
}
答案 2 :(得分:0)
在这种情况下,您可以简单地使用for循环和索引来测试相等性,而不是使用$ .inArray。我想你混淆了两件事:
var determineHour = selectNumber.options[selectNumber.selectedIndex].innerHTML;
for (var i = 0; i < stationRentalsHours.length; i++) {
if( determineHour == stationRentalsHours[i]){
stationRentalsHoursTemp.push(stationRentalsHours[i]);
}
}
更好的是,使用过滤器:
var determineHour = selectNumber.options[selectNumber.selectedIndex].innerHTML;
stationRentalsHoursTemp = stationRentalsHours.filter(function(val){return val == determineHour;});