簡體   English   中英

從jQuery中的serializeArray獲取值的最有效方法是什么?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM