[英]JavaScript Object - Find one property -> change to true and change all others to false
有什么办法可以缩短这段代码和逻辑? 该代码目前很长。 也许我可以用map,hash或其他方式做什么?
如您所见,我有一个具有7个属性的对象。 我想要一种简单的方法来将一个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;
}
如何将target
给定的属性设置为true
,同时将其他6个属性设置为false
?
一个简单的按键循环,如果匹配则将每个按键设置为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))
我有点困惑。 您的对象的所有属性都已设置为false。 是否假定此对象将不会始终将所有属性设置为false? 如果是这样,这将是我的方法。
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;
只需将所有值设置为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.