[英]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.