在一系列对象中意外重复输出
Unintended duplicate output in series of objects
我有一个问题与以下代码。它用于从格式化为
的对象数组中删除重复项(第三项和最后项)。{x: val, y: val2}
但是,我偶尔会得到重复的输出(图像),例如:
Object {x: 5, y: 0}
Object {x: 7, y: 0}
Object {x: 7, y: 5}
Object {x: 5, y: 2}
Object {x: 2, y: 1}
Object {x: 7, y: 5}
为什么这段代码没有像它应该的那样删除重复项?
var mines = [{}];
console.log("'n'n'n'n'n");
for (var i = 0; i < 10; i++){ //for each mine that needs to be made
var mine = {}; //initalize temporary object
var dupeerr = false; //set duplication error flag to false
//(will be flipped if loop needs to be re-executed)
do{
//generate coordinates for new mine
//(random int between 0 and max size), then rounded to
mine.x = Math.round(Math.random()*(8));
mine.y = Math.round(Math.random()*(9));
for (var j = mines.length - 1; j >= 0; j--) { //for each mine in array
if ((mines[j].x == mine.x) && (mines[j].y == mine.y)) { //check for doubles
dupeerr = true; //flag for re-execution
} else if (mines[j] != mine) {
dupeerr = false;
}
};
//console.log(mines);
} while (dupeerr || bounderr);
mines[i] = mine;
}
var ans = [];
for (var i = 0; i < mines.length; i++) {
ans[i] = mines[i];
var minebtn = document.getElementById(JSON.stringify(ans[i]));
console.log(ans[i]);
};
问题是你的for循环:
for (var j = mines.length - 1; j >= 0; j--) { //for each mine in array
if ((mines[j].x == mine.x) && (mines[j].y == mine.y)) { // check for doubles
dupeerr = true; //flag for re-execution
break; // This should be sufficient to break you out of the for loop on true
} else if (mines[j] != mine) {
dupeerr = false;
}
};
即使它找到一个,它也会继续。在下一次尝试时,它可能为false,并将dupeerr覆盖为false。
您可以使用JSON完成此操作。这有点粗糙,但是对于简单的对象应该可以正常工作:
var arr = [{x:1,y:1}, {x:1,y:2}, {x:1,y:1}, {x:1,y:2}];
function removeDups(arr) {
return arr
.map(JSON.stringify)
.filter(function(v,i,self){ return self.indexOf(v) == i })
.map(JSON.parse);
}
console.log(removeDups(arr)); //=> [{x:1,y:1}, {x:1,y:2}]
相关文章:
- 意外的javascript输出
- JavaScript:控制台的意外输出.log('str' + int + int)
- 为什么console.log()在我的代码中输出意外的0
- 在文件中执行 IIFE 时出现意外输出.js
- 基本的JavaScript,如果给出意外的输出,则有多个其他
- JavaScript 二维数组填充中的意外输出
- SyntaxError:JSON.parse:解析PHP输出时出现意外字符
- 带有数组赋值的Javascript意外控制台输出;
- 在一系列对象中意外重复输出
- 为什么脚本会给出意外的输出
- Javascript输出原因意外的令牌<
- 与函数一起使用时this的值.调用产生意外输出
- 过程代码的意外输出值
- js中罕见的意外输出的调试帮助
- 输出HTML时出现意外的令牌错误
- 输出文本文件时出现意外字符串
- 如何输出JSON解析兼容JSON与PHP json_encode?JSON.parse -由于单转义双引号导致的意外令牌
- 响应.json() 上的“意外输出结束”错误
- 使用Moment.js的JS间隔生成函数:意外输出
- 使用for(..)遍历数组时的意外输出)循环