如何处理这个数组?

let arr = [1,0,0,0];

我的问题是arr里面的每项分别是每个按钮的状态,我点击某项反转其状态,且其他置为0。

如何比较好的实现?


慕田峪9158850
浏览 538回答 5
5回答

元芳怎么了

点击某按钮之后,拿到对应数组中的index,然后map一下let clickIndex //点击的indexlet fn = val => val === 0 ? 1 : 0newArr = arr.map( (val, index) => index === clickIndex ? fn(val) : 0 ) //index相等反转,否则为0

手掌心

let arr = [1, 0, 0, 0];function reversal(data, index) {&nbsp; &nbsp; data[index] = !data[index] ? 1 : 0;&nbsp; &nbsp; for (let i = 0; i < data.length; i++) {&nbsp; &nbsp; &nbsp; &nbsp; if (i === index)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; break;&nbsp; &nbsp; &nbsp; &nbsp; data[i] = 0;&nbsp; &nbsp; }}reversal(arr, 2);console.log(arr);

小怪兽爱吃肉

回想一下曾经学过的二进制取反:&nbsp; &nbsp; 1 - 1 = 0&nbsp; &nbsp; 1 - 0 = 1发现了什么吗? 某位数取反等于 1 减这个数本身。再看这个问题,是不是有了一个新思路:let arr = [1,0,0,0];const af = ('1111' - arr.join('')).toString().padStart(4,0).split('');&nbsp; // ['0','1','1','1']这样做避免了循环遍历,但是唯一的缺点在于结果数组的元素是字符串类型,当然这其实也不会影响你做 Boolean 判断。

不负相思意

有且仅有一个激活的key,那你直接存一个key不就好了么,存一个数组是为了什么。

一只萌萌小番薯

var arr = [1, 0, 0, 0]var index = 2var check = arr[index]for (var i in arr) arr[i] = 0arr[index] = 1 - check
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript