我想制作简单的数组(比如在php中),我得到错误:“未捕获的TypeError:无法读取未定义的属性'480'(...)”问题出在哪里?< / p>
select 1 from dual where 0 = 0
解决方案吗
var $form = [];
for (var $i = 0; $i < 6; $i++) {
$form[5][480]['value'][$i] = Math.floor(Math.random() * (6 - 4 + 1)) + 4;
}
答案 0 :(得分:0)
您尝试从480
访问$form[5]
,但$form[5]
未定义。在循环之前,您正在设置$form = [];
,因此5
位置没有任何内容。 $form
是一个空数组。
顺便说一句,这是一个关联数组:
var array1, array2, array3;
array1 = [1,2,3];
array2 = [4,5,6];
array3 = [7,8,9];
var $form = [array1, array2, array3];
/*
$form[0] // array1 - [1,2,3]
$form[1] // array2 - [4,5,6]
$form[2] // array3 - [7,8,9]
$form[0][0] // array1[0] - 1
$form[0][1] // array1[1] - 2
...
$form[2][2] // array3[2] - 9
*/
看起来你可能想要使用的是一个对象。
$form = { // initialize $form
5:{
480: { value: [] }
}
};
for (var $i = 0; $i < 6; $i++) {
$form[5][480]['value'][$i] = Math.floor(Math.random() * (6 - 4 + 1)) + 4;
}
但是如果你需要使用数组,这也可以:
$form = []; // initialize $form
$form[5] = [];
$form[5][480] = {value:[]};
答案 1 :(得分:0)
options = {
responsive: false,
maintainAspectRatio: false
};
给出,你展示的代码,这应该工作......
答案 2 :(得分:0)
你可以在javascript中做一些事情 - 这个函数可能不是最漂亮的方法,但它是通用的
第一个参数是&#34; root&#34;对象,其后至少有1个节点&#34;,最后一个参数是值
function assoc(root) {
var parts = arguments.slice(1);
var value = parts.pop();
parts.reduce(function(result, part, index) {
if (index < parts.length - 1) {
return result[part] = result[part] || {};
}
result[part] = value;
}, root);
}
现在你的代码需要像这样改变:
var $form = {}; // use an object, not an array
for (var $i = 0; $i < 6; $i++) {
assoc($form,5,480,'value',$i, Math.floor(Math.random() * (6 - 4 + 1)) + 4);
}
console.log(JSON.stringify($form));