有效的数独之forEach讲解

<!DOCTYPE html>
<html>
<head>
	<meta charset="UTF-8">
	<title>js练习</title>
</head>
<body>

</body>
<script>
	var isValidSudoku = function(board) {
	    //检查每一行
	    // board.forEach(item=>{
	    // 	let row=[];
	    // 	item.forEach(r=>{
	    // 		if(r!='.') row.push(r);
	    // 	})
	    // 	let set=new Set(row);//去重
	    // 	if (set.size!=row.length) return false;
	    // })//forEach没办法使用 break 语句跳出循环,或者使用return从函数体内返回。
	     for (let i = 0; i < board.length; i++) {
	     	let row=[];
	     	for (let j = 0; j < board[i].length; j++) {
	     		if(board[i][j]!='.') row.push(board[i][j]);
	     	}
	     	let set=new Set(row);//去重
	    	if (set.size!=row.length) return false;
	     }
	    //检查每一列
	    for (let i = 0; i < 9; i++) {
	    	let col = []
	    	board.forEach( c => {
	    		if (c[i] != '.') col.push(c[i])
	    	})
	    	let set = new Set(col)
	    	if (set.size != col.length) return false;
	    }
	    //检查每个小方块
	    for(let x=0;x<9;x+=3){
	    	for (let y = 0; y < 9; y+=3) {//控制方块
	    		let box=[];
	    		for(let a=x;a<3+x;a++){
	    			for(let b=y;b<3+y;b++){
	    				if(board[a][b]!='.') box.push(board[a][b]);
	    			}
	    		}
	    		let set=new Set(box);
	    		if (set.size!=box.length) return false;
	    	}
	    }
	    return true ;
	};
	console.log(isValidSudoku([["7",".",".",".","4",".",".",".","."],[".",".",".","8","6","5",".",".","."],[".","1",".","2",".",".",".",".","."],[".",".",".",".",".","9",".",".","."],[".",".",".",".","5",".","5",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".","2",".","."],[".",".",".",".",".",".",".",".","."],[".",".",".",".",".",".",".",".","."]])
)
</script>
</html>

forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。
注意: forEach() 对于空数组是不会执行回调函数的。
语法

array.forEach(function(currentValue, index, arr), thisValue)

在这里插入图片描述
计算数组所有元素相加的总和:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>一个参数</title>
</head>
<body>
<p>点击按钮计算数组所有元素相加的总和。</p>
<button onclick="numbers.forEach(myFunction)">点我</button>
<p>数组元素总和:<span id="demo"></span></p>
<script>
var sum = 0;
var numbers = [65, 44, 12, 4];

function myFunction(item) {
    sum += item;
    demo.innerHTML = sum;
}
</script>

</body>
</html>

将数组中的所有值乘以特定数字:

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>三个参数</title>
</head>
<body>

<p>点击按钮将数组中的所有值乘以特定数字。</p>
<p>乘以: <input type="number" id="multiplyWith" value="10"></p>
<button onclick="numbers.forEach(myFunction)">点我</button>

<p>计算后的值: <span id="demo"></span></p>

<script>
var numbers = [65, 44, 12, 4];

function myFunction(item,index,arr) {
    arr[index] = item * document.getElementById("multiplyWith").value;
    demo.innerHTML = numbers;
}
</script>

</body>
</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值