如何构造javascript数组
我有一个动态表单,你可以点击一个按钮,一个新的表单行被添加到表单中。表单条目如下所示:如何构造javascript数组,javascript,php,jquery,arrays,Javascript,Php,Jquery,Arrays,我有一个动态表单,你可以点击一个按钮,一个新的表单行被添加到表单中。表单条目如下所示: <input type='text' class='custom' data-index='".$f."' name='column_value_one' value='1'> <input type='text' class='custom' data-index='".$f."' name='column_value_two' value='2'> 我试图得出以下最终结果: da
<input type='text' class='custom' data-index='".$f."' name='column_value_one' value='1'>
<input type='text' class='custom' data-index='".$f."' name='column_value_two' value='2'>
我试图得出以下最终结果:
data[0]['column_value_one'] = 1;
data[0]['column_value_two'] = 2;
data[1]['column_value_one'] = 1;
data[1]['column_value_two'] = 2;
我通常只编写PHP,因此我按照上面的方法来布置数组。但这将是一个Javascript/Jquery数组,而不是PHP
我将非常感谢您的帮助 如果索引不存在,则需要将
数据[index]
初始化为{}
data[index] = data[index] || {};
比如:
var数据=[];
$(“.custom”).each(函数(){
var index=parseInt($(this.attr('data-index'));
数据[索引]=数据[索引]| |{};
数据[索引][$(this.attr(“name”)]=$(this.val();
});
控制台日志(数据)代码>
听起来您需要一组对象:
data = [
{column_value_one: 1, column_value_two: 2},
// ...
];
在这种情况下,由于第二个输入紧跟第一个输入,您可以执行以下操作:
var data = $("input[name=column_value_one]").map(function() {
return {column_value_one: this.value, column_value_two: $(this).next().val()};
}).get();
实例:
var data=$(“输入[name=column\u value\u one]”)。映射(函数(){
返回{column_value_one:this.value,column_value_two:$(this.next().val()};
}).get();
控制台日志(数据)代码>
我应该提到,$f是由PHP循环生成的,每两个集合都会有一个新的数据索引ID。实际问题是什么?与从服务器输出每个元素的静态值相比,使用父元素的map()
和实际index()
可能是一个更好的解决方案。查找最后一个输入并在单击时添加最后一个输入的+1值它给我响应无法设置undefinedHappy的属性“column\u value\u one”来帮助:)谢谢TJ,找到了解决办法。感谢您的回复。@PatrickMcCarthy-刚刚添加了第二个。(除非您需要它来做其他事情,否则不需要数据索引
)
var data = $("input[name=column_value_one]").map(function() {
return {column_value_one: this.value, column_value_two: $(this).next().val()};
}).get();