Javascript 什么';在jQuery中,从序列化数组获取值的最有效方法是什么?
我将表单的值保存为Javascript 什么';在jQuery中,从序列化数组获取值的最有效方法是什么?,javascript,jquery,arrays,object,Javascript,Jquery,Arrays,Object,我将表单的值保存为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[
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表单上的名称数组输入,如
)
如果从
serialize()
中执行此操作更容易,我也愿意这样做。您可以创建一个与键/值匹配的对象,然后像访问字典一样访问它:
myArray = $('form').serializeArray();
dict = {};
$(myArray).each(function(i, field){
dict[field.name] = field.value;
});
console.log(dict["key2"])
您可以创建与键/值匹配的对象,然后像访问字典一样访问它:
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
假设键是唯一的,可能:
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);
});
以下是演示:您可以使用以下内容:
$.each(arr, function(i, obj) {
if(obj.name === "key2") console.log(obj.value);
});
以下是演示:谢谢,不幸的是,我的序列化数组本身包含一些数组名称(例如key4[],key4[],key4[])。在这种情况下,你有什么建议?有关详细信息,请参阅修订后的问题。如果它们的名称相同,则为“是”-函数将只返回数组中的多个元素。非常感谢。我能够让它至少对数组的第一项起作用,比如:
getValByKey(myForm,'key4[])//array-val-1
,但是如何从key4[]
返回第二项呢?使用byKey
,但将目标改为第二个元素:byKey(arr,'key2')[1]。value
。谢谢,不幸的是,我的序列化数组本身包含一些数组名称(例如key4[],key4[],key4[])。在这种情况下,你有什么建议?有关详细信息,请参阅修订后的问题。如果它们的名称相同,则为“是”-函数将只返回数组中的多个元素。非常感谢。我能够让它至少对数组的第一项起作用,比如:getValByKey(myForm,'key4[])//array-val-1
,但是如何从key4[]
返回第二项呢?使用byKey
,但将目标改为第二个元素:byKey(arr,'key2')[1]。value
。是的,但这不需要在每个项目之间循环吗?难道没有更有效的方法吗?是的,但这不需要在每个项目之间循环吗?有没有更有效的方法?谢谢。这是否也适用于key4[]
,key4[]
,key4[]
?(参见更新的问题详情)是的,我发现了相同的问题。有没有关于如何处理数组的建议?它们是数组还是数组名?我真的不知道你想做什么。表格是和的混合体。我需要一种从简单的名称/值对和更复杂的名称/数组中获取值的有效方法。我想从key2和key4[2](使用上面问题中的示例对象)中获取值,尽可能简单高效。谢谢。这是否也适用于key4[]
,key4[]
,key4[]
?(参见更新的问题详情)是的,我发现了相同的问题。有没有关于如何处理数组的建议?它们是数组还是数组名?我真的不知道你想做什么。表格是和的混合体。我需要一种从简单的名称/值对和更复杂的名称/数组中获取值的有效方法。我想从key2和key4[2](使用上面问题中的示例对象)中获取值,并尽可能轻松高效。