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
添加回答
舉報