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