let arr = [1,0,0,0];
我的问题是arr里面的每项分别是每个按钮的状态,我点击某项反转其状态,且其他置为0。
如何比较好的实现?
let arr = [1, 0, 0, 0];
function reversal(data, index) {
data[index] = !data[index] ? 1 : 0;
for (let i = 0; i < data.length; i++) {
if (i === index)
break;
data[i] = 0;
}
}
reversal(arr, 2);
console.log(arr);
回想一下曾经学过的二进制取反:
1 - 1 = 0
1 - 0 = 1
发现了什么吗? 某位数取反等于 1 减这个数本身。
再看这个问题,是不是有了一个新思路:
let arr = [1,0,0,0];
const af = ('1111' - arr.join('')).toString().padStart(4,0).split(''); // ['0','1','1','1']
这样做避免了循环遍历,但是唯一的缺点在于结果数组的元素是字符串类型,当然这其实也不会影响你做 Boolean 判断。
var arr = [1, 0, 0, 0]
var index = 2
var check = arr[index]
for (var i in arr) arr[i] = 0
arr[index] = 1 - check
10 回答11.1k 阅读
15 回答8.4k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
8 回答6.2k 阅读
2 回答2.6k 阅读✓ 已解决
点击某按钮之后,拿到对应数组中的index,然后map一下