检查动态数组对静态数组

时间:2011-04-04 21:13:38

标签: javascript jquery

我需要一些javascript / jquery。我有两个数组,一个是硬编码的静态数组,另一个是用户驱动的动态数组。例如,每个数组中的值表示一个div。每个div都在静态数组中表示。我希望能够只显示动态数组中存在的div。因此,如果动态数组发生更改,它会显示动态数组中存在的div并隐藏不存在的div。我还希望能够运行连接到每个div的函数,即box1有一个需要调用的函数。

var static_list = new Array("box1","box2","box3");
var dynamic_list = new Array("box1","box3");

3 个答案:

答案 0 :(得分:1)

我假设dynamic_liststatic_list的一个子集。

$.each(static_list, function(index, value) {
  $('#' + value).hide();
});

$.each(dynamic_list, function(index, value) {
  $('#' + value).show();
});

$.each()遍历一个集合,为每个元素调用回调函数。第一个$.each()会隐藏static_list中包含ID的所有元素。第二个$.each()显示dynamic_list中包含ID的所有元素。按顺序运行两者都会隐藏static_list中的所有div元素,但dynamic_list中的除外。{/ p>

答案 1 :(得分:0)

您可以使用简单的比较器功能:

// Return true if value is in array
function isIn(value, array) {
  var i = array.length;
  while (i--) {
    if (array[i] == value {
      return true;
    }
  }
  return false;
}

然后你可以看到一个值是否在数组中使用:

if (isIn(value, array)) {
  // do something with/to value
}

答案 2 :(得分:0)

您可以使用$.each()$.inArray().toggle()

来获得结果
$.each(static_list, function(index, value){
    var showHide = $.inArray(value, dynamic_list) >= 0;
    $("#" + this).toggle(showHide);
});

jsfiddle上的代码示例。