5 回答
TA贡献1798条经验 获得超7个赞
点击某按钮之后,拿到对应数组中的index,然后map一下
let clickIndex //点击的index
let fn = val => val === 0 ? 1 : 0
newArr = arr.map( (val, index) => index === clickIndex ? fn(val) : 0 ) //index相等反转,否则为0
TA贡献1942条经验 获得超3个赞
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);
TA贡献1852条经验 获得超1个赞
回想一下曾经学过的二进制取反:
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 判断。
TA贡献1795条经验 获得超7个赞
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
添加回答
举报