以下是我的JS代码:
var checkedLength = $(ele).parent().parent().find('table').find(':checkbox:checked').length;
if(checkedLength)
{
$(ele).parent().parent().find('table').find(':checkbox:checked').each(function(i) {
$(this).parent().removeClass().addClass('play');
$(this).prop('checked',false);
var agn = $(this).data('agn');
var value = $(this).data('kid');
checkedValues[agn] = {};
// Make bar an array, if it's not defined yet
checkedValues[agn]["bar"] = checkedValues[agn]["bar"] || [];
checkedValues[agn]["bar"].push(value);
});
console.log(checkedValues);
}
从上面的代码我得到输出:
object {agnName => bar[0] = 6}
期望的O / P:
object {agnName => bar[0] = 4,bar[1] = 5 , bar[2]=> 6}
任何人都可以指导我如何实现这种数组结构?
感谢。
答案 0 :(得分:3)
您有一个测试,看看是否存在checkedValues[agn]
,如果不存在,则将其创建为空对象。但是,然后您会立即尝试推送到该对象中不存在的数组
尝试更改
checkedValues[agn] = {};
checkedValues[agn]['pl'].push = $(this).data('kid');
要
checkedValues[agn] = {pl:[]};/* add property "pl" who's value is empty array*/
/* now the array exists , can push elements into it*/
checkedValues[agn]['pl'].push($(this).data('kid'));
另请注意您使用的push()
语法不正确.....应为push( value )
答案 1 :(得分:2)
你想要一个对象,而不是一个数组:
checkedValues = {};
checkedValues.foo = {};
checkedValues.foo.bar = 'baz';
// Another way:
checkedValues["keyname"] = "value";
// You can also use variables as keys
var agn = "foo";
checkedValues[agn] = "value";
// Just don't forget to init nested objects
var agn = "foo";
checkedValues[agn] = {};
checkedValues[agn]["bar"] = "value";
// If you need an array inside:
var agn = "foo";
checkedValues[agn] = {};
// Make bar an array, if it's not defined yet
checkedValues[agn]["bar"] = checkedValues[agn]["bar"] || [];
checkedValues[agn]["bar"].push("value");
答案 2 :(得分:0)
关联数组在Javascript中作为对象完成:
var data = {
agnName: {
pl: [4, 5, 6]
}
}
因此您可以访问data.agnName.pl [0]以使用data ['agnName']动态返回4个或更多.pl [0]
答案 3 :(得分:0)
创建一个覆盖维度的obj。你必须初始化obj然后你可以输入值。如下所示
var obj = {}
obj[dynamicval1] = {};
obj[dynamicval1][dynamicval2] = {};
obj[dynamicval1][dynamicval2] = {key1:value1,key2:value2};
希望它有效!