为了账号安全,请及时绑定邮箱和手机立即绑定

如何处理这个数组?

如何处理这个数组?

慕田峪9158850 2019-03-04 17:12:11
let arr = [1,0,0,0];我的问题是arr里面的每项分别是每个按钮的状态,我点击某项反转其状态,且其他置为0。如何比较好的实现?
查看完整描述

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


查看完整回答
反对 回复 2019-03-15
?
手掌心

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);


查看完整回答
反对 回复 2019-03-15
?
小怪兽爱吃肉

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 判断。


查看完整回答
反对 回复 2019-03-15
?
不负相思意

TA贡献1777条经验 获得超10个赞

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


查看完整回答
反对 回复 2019-03-15
?
一只萌萌小番薯

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


查看完整回答
反对 回复 2019-03-15
  • 5 回答
  • 0 关注
  • 537 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信