Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 什么';在jQuery中,从序列化数组获取值的最有效方法是什么?_Javascript_Jquery_Arrays_Object - Fatal编程技术网

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](使用上面问题中的示例对象)中获取值,并尽可能轻松高效。