简体   繁体   English

JavaScript对象-查找一个属性->更改为true,将其他所有属性更改为false

[英]JavaScript Object - Find one property -> change to true and change all others to false

Is there any way I can shorten this bit of code and logic? 有什么办法可以缩短这段代码和逻辑? This code is currently very long. 该代码目前很长。 Maybe there is something I can do with map, hash or whatever? 也许我可以用map,hash或其他方式做什么?

As you can see, I have an object with 7 properties. 如您所见,我有一个具有7个属性的对象。 I want an easy way of changing one target property to true and all 6 others to false . 我想要一种简单的方法来将一个target属性更改为true而将所有其他6个属性更改为false

 var object = {
        a: false,
        b: false,
        c: false,
        d: false,
        e: false,
        f: false,
        g: false
    }

    target = "b";

    switch(target) {
        case a:
            object.a = true;
            object.b = false;
            object.c = false;
            object.d = false;
            object.e = false;
            object.f = false;
            object.g = false;
            break;
        case b:
            object.a = false;
            object.b = true;
            object.c = false;
            object.d = false;
            object.e = false;
            object.f = false;
            object.g = false;
            break;
        case c:
            object.a = false;
            object.b = false;
            object.c = true;
            object.d = false;
            object.e = false;
            object.f = false;
            object.g = false;
            break
        case d:
            object.a = false;
            object.b = false;
            object.c = false;
            object.d = true;
            object.e = false;
            object.f = false;
            object.g = false;
            break;
        case e:
            object.a = false;
            object.b = false;
            object.c = false;
            object.d = false;
            object.e = true;
            object.f = false;
            object.g = false;
            break
        case f:
            object.a = false;
            object.b = false;
            object.c = false;
            object.d = false;
            object.e = false;
            object.f = true;
            object.g = false;
            break;
        case g:
            object.a = false;
            object.b = false;
            object.c = false;
            object.c = false;
            object.d = false;
            object.e = false;
            object.f = false;
            object.g = true;
            break;
    }

How can I set the property given in target to true , while setting the other 6 to false ? 如何将target给定的属性设置为true ,同时将其他6个属性设置为false

A simple loop over the keys and set each one to false/true if it matches 一个简单的按键循环,如果匹配则将每个按键设置为false / true

 var myObject = { a: false, b: false, c: false } function updateState (active) { Object.keys(myObject).forEach( function (key) { myObject[key] = key === active }) } /* const updateState = active => Object.keys(myObject).forEach( key => myObject[key] = key === active ) */ console.log(JSON.stringify(myObject)) updateState('b') console.log(JSON.stringify(myObject)) updateState('c') console.log(JSON.stringify(myObject)) 

I'm a bit confused. 我有点困惑。 Your object has all properties already set to false. 您的对象的所有属性都已设置为false。 Is the assumption that this object will not always have all properties set to false? 是否假定此对象将不会始终将所有属性设置为false? If so this would be my approach. 如果是这样,这将是我的方法。

var object = {
    a: false,
    b: false,
    c: false,
    d: false,
    e: false,
    f: false,
    g: false
}

target = "b";

object = _.mapValues(object, () => false);

object[target] = true;

Simply set all values to false, then set the value you want to true: 只需将所有值设置为false,然后将您想要的值设置为true:

 var object = { a: false, b: false, c: false, d: false, e: false, f: false, g: false } target = "b"; for (var prop in object) { object[prop] = false; } object[target] = true; 

var object = {
    a: false,
    b: false,
    c: false,
    d: false,
    e: false,
    f: false,
    g: false
}
target = "b";
Object.keys(object).forEach(key => {
  object[key] = false
})
object[target] = true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 反应:如果 1 state 为真,则将其他更改为假 - React: if 1 state is true, change others to false 如果 object 中的所有值都相同且为 false 或 true,则更改变量值 - Change variable value if all value inside an object are same and false or true 在反应钩子中使一个为真,而其他人则反对为假 - Make one true while others in object to false in react hooks Javascript:使用函数将变量更改为真/假 - Javascript: Use a function to change variables to true/false 将 javascript Object 的所有 false 值设置为 true - Set all false values ​of javascript Object to true 使用JavaScript无法在DropdownLists的Selected index change事件上更改Gridview Textbox的可见属性true false - Change Gridview Textbox's visible property true false on DropdownLists's Selected index change event using javascript not working 有2个具有相同id的对象数组,但一个对象属性为真,另一个属性为假,如果属性为假,如何删除两者 - There is 2 array of object with same id, but one object property is true and other property is false, how to remove both if property is false 将 asp:textbox 可见属性更改为 true 的 Javascript - Javascript to change asp:textbox visible property to true 将数组中 object 的属性设置为 true,其他设置为 false - Set attribute of the object in array to true but others to false 如何将 isActive boolean 属性从 false 更改为 true? - How can to change isActive boolean property from false to true?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM