【问题标题】:Iterate jQuery Object Of Arrays And Non-Arrays迭代数组和非数组的jQuery对象
【发布时间】:2012-02-12 10:46:36
【问题描述】:

考虑以下...

var $QuestionnaireAnswers = [];

var $QuestionnaireInProgress =
        {
            Questions: {
                QuestionNumber: null,
                Options: [],
                YesNo: [],
                TextArea: []
            }
        };

function findAndRemove(array, property, value) {
   $.each(array, function(index, result) {
      if(result[property] == value) {
          //Remove from array
          array.splice(index, 1);
      }    
   });
}

基本上,我拥有的是一个数据驱动的问卷,对于每个问题编号,它可以有 0 个或更多,选项可以是单选按钮列表或复选框以及 0 个或更多是/否单选按钮组;和或零个或多个文本区域...

$QuestionnaireAnswers 数组最终将发布到我的 mvc3 控制器...

一个 $QuestionnaireInProgress 对象根据 jquery 点击/更改事件和其他条件添加到 $QuestionnaireAnswers 数组中...对于每个问题编号。

当前问题 1 是集成 findAndRemove 函数,我将递归地使用该函数来告诉我是否存在问题编号,然后我将再次调用它并查看作为 $QuestionnaireInProgress 对象一部分的数组之一中的项目是否具有其中的特定值...基本上是查看问题答案是否已更改或编辑,例如已更改是/否单选或在单选按钮列表中选择了不同的单选选项,复选框,文本框同上。 ..

当前问题 2 正在调整 findAndRemove 以迭代每个问题编号的 n 个数组,如果存在则将其删除或拼接出来,不太确定如何针对这种递归进行调整...

我无法达到 findandremove 将接受 $QuestionnaireAnswers 数组作为参数的地步...

假设我像这样添加一个项目......

$QuestionnaireAnswers.push($QuestionnaireInProgress);

然后我打电话给findandremove($QuestionnaireAnswers, "QuestionNumber", "1234");

我得到了几乎没有用的错误“Microsoft JScript 运行时错误:预期对象。

我可能过于复杂或遗漏了一些明显的东西,所以我感谢任何 cmet、建议等。

提前致谢。

【问题讨论】:

  • 一方面,在原地迭代数组时不要使用splice。请改用filter 函数。对于 findAndRemove 函数,我建议简单地将代表答案数组中某个问题 Y 的答案的整个对象替换为新值。对更改的值进行比较可能会变得复杂并导致不必要的工作。

标签: jquery asp.net-mvc-3 object multidimensional-array


【解决方案1】:

您是否在控制台中查看过它在哪一行中断?

【讨论】:

    猜你喜欢
    • 2011-09-12
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 2014-07-11
    • 2017-03-29
    • 2019-02-27
    • 2017-07-30
    • 2017-08-06
    相关资源
    最近更新 更多