[英]What's the most efficient way to fetch the value from a serializeArray in jQuery?
我將窗體的值保存為serializeArray()
如下所示:
$('form').serializeArray();
這將產生一個對象數組,每個對象都有名稱-值對。 像這樣:
0: Object
name: "key1"
value: "val1"
1: Object
name: "key2"
value: "val2"
2: Object
name: "key3"
value: "val3"
3: Object
name: "key4[]"
value: "array-val-1"
4: Object
name: "key4[]"
value: "array-val-2"
5: Object
name: "key4[]"
value: "array-val-3"
假設一個人不知道key2
是第二個對象,最有效的方法就是獲取名稱為key2
的特定對象的值?
key4[]
數組中的第二項(即key4[1]
)如何? (大概來自html形式的名稱數組輸入,例如<input name="favoriteColors[]">
)
如果這更容易從serialize()
,我也很樂意。
您可以創建一個與您的鍵/值匹配的對象,然后像字典一樣訪問它:
myArray = $('form').serializeArray();
dict = {};
$(myArray).each(function(i, field){
dict[field.name] = field.value;
});
console.log(dict["key2"])
假設鍵是唯一的,也許:
function byKey(arr, key) {
return arr.filter(function (el) { return el.name === key });
}
byKey(arr, 'key2')[0].value // val2
注意[0]
的原因是filter
返回一個數組,因此您需要獲取第一個元素。
如果鍵名不是唯一的,則將返回更大的數組。 由您決定要執行的操作,例如: byKey(arr, 'key2')[1].value
將返回第二個元素。
您也可以將上述代碼實現到您的函數中。
function getValByKey(arr, key) {
var result = arr.filter(function (el) { return el.name === key });
return result[0].value;
}
getValByKey(arr, 'key2') // val2
您可以使用以下命令:
$.each(arr, function(i, obj) {
if(obj.name === "key2") console.log(obj.value);
});
這是演示: http : //jsfiddle.net/tcJuG/1/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.