考慮以下...迭代jQuery對象陣列和非陣列
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對象的一部分數組中的某個項目有一個特殊的價值...基本上看問題的答案是否已經改變或編輯,如是/否收音機已更改或在單選按鈕列表中選擇了不同的收音機選項,同上複選框,textarays ...
本期2調整findAndRemove迭代每題號排列的n個,並刪除或如果它存在,不太清楚如何調整這個爲這種遞歸的拼接出來...
發生了什麼事是我不能讓的地步findandremove將接受$ QuestionnaireAnswers數組作爲參數...
說我將項目添加到它是這樣的...
$QuestionnaireAnswers.push($QuestionnaireInProgress);
然後我打電話findandremove($QuestionnaireAnswers, "QuestionNumber", "1234");
而且我得到了「Microsoft JScript運行時錯誤:對象預期的非常無用的錯誤。
我可能是在這個複雜或者缺少明顯的東西,所以我很感謝提前
感謝任何意見,建議等。
其中之一,不要在就地迭代陣列時使用'splice'。改用['filter'](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Array/filter)函數。對於'findAndRemove'函數,我建議用answers值代替answers數組中的一些問題Y的答案的整個對象。確切地對哪些值進行差異化可能會變得複雜並導致不必要的工作。 – Anurag 2012-01-18 09:17:47