在Javascript中使用多功能数组
所有崩溃且无法运行的数据 运行的数据较少,但如果在Javascript中使用多功能数组,javascript,arrays,Javascript,Arrays,所有崩溃且无法运行的数据 运行的数据较少,但如果 console.log(`row ${g}, col ${i}`); console.log(obj[pastWinners]); 它表明它是未定义的 我在Javascript中有一个多维数组,它为我运行一些计算。这个数组被转换为对象文本,然后在一些数据操作之后,被更改为json对象,最后是字符串。这个节目效果很好 我必须在多维数组中再添加310行。当我这样做时,我得到了这个错误 index.html:331未捕获类型错误:无法读取的属性“0”
console.log(`row ${g}, col ${i}`);
console.log(obj[pastWinners]);
它表明它是未定义的
我在Javascript
中有一个多维数组,它为我运行一些计算。这个数组
被转换为对象文本
,然后在一些数据操作之后,被更改为json对象
,最后是字符串。这个节目效果很好
我必须在多维数组中再添加310行。当我这样做时,我得到了这个错误
index.html:331未捕获类型错误:无法读取的属性“0”
未定义
原来的数组是这样的
var pastWinners = [
[2, 9, 19, 23, 38, 40],
[17, 25, 31, 35, 38, 43],
[8, 10, 17, 30, 33, 43],
[10, 17, 26, 28, 36, 43],
[14, 20, 25, 28, 34, 41],
[8, 13, 21, 23, 25, 43],
[10, 11, 18, 24, 27, 30],
[21, 22, 23, 26, 33, 39],
[6, 21, 23, 29, 36, 40],
[10, 12, 16, 21, 25, 42],
[1, 11, 20, 27, 34, 37]
];
[05, 07, 17, 18, 33, 35],
请注意,单个数字的十位数中没有0。但是新的数据看起来是这样的
var pastWinners = [
[2, 9, 19, 23, 38, 40],
[17, 25, 31, 35, 38, 43],
[8, 10, 17, 30, 33, 43],
[10, 17, 26, 28, 36, 43],
[14, 20, 25, 28, 34, 41],
[8, 13, 21, 23, 25, 43],
[10, 11, 18, 24, 27, 30],
[21, 22, 23, 26, 33, 39],
[6, 21, 23, 29, 36, 40],
[10, 12, 16, 21, 25, 42],
[1, 11, 20, 27, 34, 37]
];
[05, 07, 17, 18, 33, 35],
它确实在十位有一个0。我之所以提到这一点,是因为除了阵列的310多行之外,这是唯一的区别。我已经检查了50次数据,没有任何问题
这样的微小差异会导致这样的错误吗?它说错误是在我的程序的第331行被抛出
var obj = {};
for (var g = 0; g < pastWinners.length; g++) {
for (var i = 0, j = pastWinners.length; i < j; i++) {
if (obj[pastWinners[g][i]] == undefined) {
console.log(`row ${g}, col ${i}`);
console.log(obj[pastWinners]);
}
if (obj[pastWinners[g][i]]) { //this is line 331
obj[pastWinners[g][i]]++;
} else {
obj[pastWinners[g][i]] = 1;
}
}
}
var picks = [];
for (var numbs in obj) {
picks.push([numbs, obj[numbs]])
picks.sort(
function(a, b) {
return a[1] - b[1]
}
)
}
picks.reverse();
var topPicks = []
for (var winners = 0; winners < 6; winners++) {
topPicks.push(picks[winners][0]);
}
var weekPicks = topPicks.toString();
console.log(weekPicks);
alert(weekPicks);
未定义时,请尝试在控制台中打印阵列,并在日志中检查阵列大小
for (var g = 0; g < pastWinners.length; g++) {
for (var i = 0, j = pastWinners.length; i < j; i++) {
if (obj[pastWinners[g][i]] == undefined){
console.log(`row ${g}, col ${i}`);
console.log(obj[pastWinners]);
}
if (obj[pastWinners[g][i]]) { //this is line 331
obj[pastWinners[g][i]]++;
} else {
obj[pastWinners[g][i]] = 1;
}
}
}
for(var g=0;g
在未定义阵列时,尝试在控制台中打印阵列,并在日志中检查阵列大小
for (var g = 0; g < pastWinners.length; g++) {
for (var i = 0, j = pastWinners.length; i < j; i++) {
if (obj[pastWinners[g][i]] == undefined){
console.log(`row ${g}, col ${i}`);
console.log(obj[pastWinners]);
}
if (obj[pastWinners[g][i]]) { //this is line 331
obj[pastWinners[g][i]]++;
} else {
obj[pastWinners[g][i]] = 1;
}
}
}
for(var g=0;g
我会采取不同的做法:
a。更改第二个循环
b。定义obj
var pastWinners = [
[2, 9, 19, 23, 38, 40],
[17, 25, 31, 35, 38, 43],
[8, 10, 17, 30, 33, 43],
[10, 17, 26, 28, 36, 43],
[14, 20, 25, 28, 34, 41],
[8, 13, 21, 23, 25, 43],
[10, 11, 18, 24, 27, 30],
[21, 22, 23, 26, 33, 39],
[6, 21, 23, 29, 36, 40],
[10, 12, 16, 21, 25, 42],
[1, 11, 20, 27, 34, 37],
];
var obj=[];
for (var g = 0; g < pastWinners.length; g++) {
for (var i = 0; i < pastWinners[g].length; i++) {
if (obj[pastWinners[g][i]]) { //this is line 331
obj[pastWinners[g][i]]++;
} else {
obj[pastWinners[g][i]] = 1;
}
}
}
console.log(obj)
var=[
[2, 9, 19, 23, 38, 40],
[17, 25, 31, 35, 38, 43],
[8, 10, 17, 30, 33, 43],
[10, 17, 26, 28, 36, 43],
[14, 20, 25, 28, 34, 41],
[8, 13, 21, 23, 25, 43],
[10, 11, 18, 24, 27, 30],
[21, 22, 23, 26, 33, 39],
[6, 21, 23, 29, 36, 40],
[10, 12, 16, 21, 25, 42],
[1, 11, 20, 27, 34, 37],
];
var-obj=[];
对于(var g=0;g<0.length;g++){
对于(变量i=0;i<0[g]。长度;i++){
if(obj[g][i]]){//这是第331行
obj[g][i]]++;
}否则{
obj[g][i]]=1;
}
}
}
控制台日志(obj)
我会采取不同的做法:
a。更改第二个循环
b。定义obj
var pastWinners = [
[2, 9, 19, 23, 38, 40],
[17, 25, 31, 35, 38, 43],
[8, 10, 17, 30, 33, 43],
[10, 17, 26, 28, 36, 43],
[14, 20, 25, 28, 34, 41],
[8, 13, 21, 23, 25, 43],
[10, 11, 18, 24, 27, 30],
[21, 22, 23, 26, 33, 39],
[6, 21, 23, 29, 36, 40],
[10, 12, 16, 21, 25, 42],
[1, 11, 20, 27, 34, 37],
];
var obj=[];
for (var g = 0; g < pastWinners.length; g++) {
for (var i = 0; i < pastWinners[g].length; i++) {
if (obj[pastWinners[g][i]]) { //this is line 331
obj[pastWinners[g][i]]++;
} else {
obj[pastWinners[g][i]] = 1;
}
}
}
console.log(obj)
var=[
[2, 9, 19, 23, 38, 40],
[17, 25, 31, 35, 38, 43],
[8, 10, 17, 30, 33, 43],
[10, 17, 26, 28, 36, 43],
[14, 20, 25, 28, 34, 41],
[8, 13, 21, 23, 25, 43],
[10, 11, 18, 24, 27, 30],
[21, 22, 23, 26, 33, 39],
[6, 21, 23, 29, 36, 40],
[10, 12, 16, 21, 25, 42],
[1, 11, 20, 27, 34, 37],
];
var-obj=[];
对于(var g=0;g<0.length;g++){
对于(变量i=0;i<0[g]。长度;i++){
if(obj[g][i]]){//这是第331行
obj[g][i]]++;
}否则{
obj[g][i]]=1;
}
}
}
控制台日志(obj)
在循环遍历[g]或尝试使用访问子数组之前,还应检查是否存在[g]
if([g]!=null){
原因是,如果由于某种原因未定义pastWinners[g]
,则脚本将尝试执行以下操作:
undefined[i]
或从undefined中获取[i]的值——它不能这样做,因为undefined不是数组——这会破坏脚本
var=[
[2, 9, 19, 23, 38, 40],
[17, 25, 31, 35, 38, 43],
[8, 10, 17, 30, 33, 43],
[10, 17, 26, 28, 36, 43],
[14, 20, 25, 28, 34, 41],
[8, 13, 21, 23, 25, 43],
[10, 11, 18, 24, 27, 30],
[21, 22, 23, 26, 33, 39],
[6, 21, 23, 29, 36, 40],
[10, 12, 16, 21, 25, 42],
[1, 11, 20, 27, 34, 37],
];
对于(var g=0;g<0.length;g++){
如果(pastWinners[g]!=null){//检查有效项
对于(var i=0,j=0[g]。长度;i console.log(pastWinners);
此外,在循环使用它或尝试使用
if([g]!=null){
原因是,如果由于某种原因未定义pastWinners[g]
,则脚本将尝试执行以下操作:
undefined[i]
或从undefined中获取[i]的值——它不能这样做,因为undefined不是数组——这会破坏脚本
var=[
[2, 9, 19, 23, 38, 40],
[17, 25, 31, 35, 38, 43],
[8, 10, 17, 30, 33, 43],
[10, 17, 26, 28, 36, 43],
[14, 20, 25, 28, 34, 41],
[8, 13, 21, 23, 25, 43],
[10, 11, 18, 24, 27, 30],
[21, 22, 23, 26, 33, 39],
[6, 21, 23, 29, 36, 40],
[10, 12, 16, 21, 25, 42],
[1, 11, 20, 27, 34, 37],
];
对于(var g=0;g<0.length;g++){
如果(pastWinners[g]!=null){//检查有效项
对于(var i=0,j=0[g]。长度;i