javascript只获取等于变量的数组元素

时间:2017-01-21 21:46:44

标签: javascript jquery arrays

我试图将变量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]);
    }
}

3 个答案:

答案 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;});