gpt4 book ai didi

javascript - 为什么 Array.concat 在连接 jQuery 对象的二元素和三元素数组时生成三元素数组?

转载 作者:行者123 更新时间:2023-11-29 18:03:57 25 4
gpt4 key购买 nike

我有一个带有两个固定输入元素的表单,后跟任意数量的动态创建的元素,这些元素的名称属性值都以相同的字符串作为后缀(参见代码片段)。我试图获得一组 jQuery 对象,每个输入元素对应一个对象。

但是,当我连接一个包含表示前两个元素的对象的 2 元素数组和一个包含表示其余元素的对象的 3 元素数组时,结果似乎只是一个包含第一个数组的数组对象,只有一个额外的元素包含第二个数组的对象作为一个数组,这不是我理解concat的工作方式。

我希望新数组是一个包含 jQuery 对象的五元素数组,表示前两个固定输入,然后是其余的。

忽略这是否是解决手头问题的正确方法(很可能不是):我的预期是否错误,有人可以解释为什么 concat 会产生这个结果吗?

var firstTwoFields = [
$('[name=field1]'),
$('[name=field2]')
];

var otherFields = $('[name$=test]').map(function() { return $(this); });

var newArray = firstTwoFields.concat(otherFields);

document.write('firstTwoFields.length: ' + firstTwoFields.length + '<br>');
document.write('otherFields.length: ' + otherFields.length + '<br>');
document.write('newArray.length: ' + newArray.length + '<br>');
document.write('newArray[2].length: ' + newArray[2].length + '<br>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<input name="field1" value="" /><br>
<input name="field2" value="" /><br>
<input name="field3_test" value="" /><br>
<input name="field4_test" value="" /><br>
<input name="field5_test" value="" /><br>
<br>

最佳答案

$().map() 将返回 jQuery 对象,它是类数组 并且具有长度,但不是' t 一个合适的数组,您可以在其上使用 Array.prototype 方法。

您需要使用get() 来返回一个正确的数组,或者使用$.map():

var otherFields = $('[name$=test]').map(function() { return $(this); }).get();

使用$.map():

 var otherFields = $.map( $('[name$=test]'), function(elem) { return $(elem); })

引用:get() docs

关于javascript - 为什么 Array.concat 在连接 jQuery 对象的二元素和三元素数组时生成三元素数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32783911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com