javascript - 尝试使用数组和哈希来简化循环

标签 javascript

鉴于此:

var formItems = [
    $("div.class1.class2:visible:eq(0) div.class3 input:eq(0)"),
    $("div.class1.class2:visible:eq(0) div.class3 input:eq(1)"),
    $("div.class1.class2:visible:eq(0) div.class3 input:eq(2)"),
    $("div.class1.class2:visible:eq(0) div.class3 input:eq(3)"),   
  ];

如果有什么方法可以简化这个:

var values = getValues(); // values.length is always equal to formItem.length
for (var i = 0; i < values.length; i++) {
  if (someCondition()) {
    $("div.class1.class2:visible:eq(0) div.class3 input:eq(0)").val(values[i].abc);
    $("div.class1.class2:visible:eq(0) div.class3 input:eq(1)").val(values[i].cde);
    $("div.class1.class2:visible:eq(0) div.class3 input:eq(2)").val(values[i].abcdf);
    $("div.class1.class2:visible:eq(0) div.class3 input:eq(3)").val(values[i].zyz);

}

最佳答案

我不确定你想要什么,但也许像这样?

var items = [
  { input: "div.class1.class2:visible:eq(0) div.class3 input:eq(0)", value: "abc" },
  { input: "div.class1.class2:visible:eq(0) div.class3 input:eq(1)", value: "cde" },
  { input: "div.class1.class2:visible:eq(0) div.class3 input:eq(2)", value: "abcdf" },
  { input: "div.class1.class2:visible:eq(0) div.class3 input:eq(3)", value: "zyz" }
];

var values = getValues();
for (var i = 0; i < values.length; i++) {
  if(this value is the right one) {
    for(var j in items) {
      $(item[j].input).val(values[i][items[j].value);
    }
  }
}

编辑 13:15

如果这不是您所说的简化的意思,那么您就必须详细说明。

var formItems = [
    $("div.class1.class2:visible:eq(0) div.class3 input:eq(0)"),
    $("div.class1.class2:visible:eq(0) div.class3 input:eq(1)"),
    $("div.class1.class2:visible:eq(0) div.class3 input:eq(2)"),
    $("div.class1.class2:visible:eq(0) div.class3 input:eq(3)"),   
  ];

var formValues = ["abc", "cde", "abcdf", "zyz"];

var values = getValues(); // values.length is always equal to formItem.length
for (var i = 0; i < values.length; i++) {
  if(this value is the right one) {
    for(var j in formItems) {
      formItems[j].val(values[i][formValues[j]);
    }
    break;
  }
}

关于javascript - 尝试使用数组和哈希来简化循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24525012/

相关文章:

JavaScript 默认函数

javascript - 来自segment.io的Track.form片段取消了表单的重定向

javascript - 日期选择器在表单重新加载后显示选定的值

javascript - jQuery animate() 不适用于 If-Else 语句

javascript - 如何设置jqGrid单元格编辑事件?

javascript - 如何使用 Node.js 解析脏 CSV?

javascript - 使用 .map 将对象添加到数组时出现意外标记 {

javascript - 如何在上传使用 SailsJS Skipper 之前验证文件类型

javascript - 用 Javascript 读出 KML 文件

javascript - 如何在 CSS 上为图像添加播放图标