【发布时间】:2018-08-24 12:37:57
【问题描述】:
有一个对象包含具有这种形式的对象:
bigObject: {
"a - values": { atr: true}
"a - items": { atr: true}
"a - others": { atr: false}
"b - values": { atr: true}
"b - items": { atr: true}
"b - others": { atr: false}
"c - values": { atr: false}
"c - items": { atr: true}
"c - others": { atr: false}
}
我在函数中使用这个对象来检查每次属性之一更改其布尔值时:onButtonClicked(item)
它做了类似的事情:
onButtonClicked(item) {
bigObject[item.id].atr= !bigObject[item.id].atr;
}
在这个函数中,我想拆分它们以便能够分别检查以a、b 和c 开头的对象的值。为此我做到了:const toCheck = item.id.split("-")[0];
这很好用,如果单击了以 a 开头的对象,它将只获取该对象。
下一步是检查特定字母是否同时存在true 和false 属性。
为此,我尝试这样做:
let countFalse = 0;
let countTrue = 0;
bigObject.forEach(x => {
if ((x.split("-")[0]) === toCheck) {
if (x.atr) {
countTrue++;
} else countFalse++;
}
if (countTrue && countFalse) {
console.log("has both true and false attributes");
} else console.log("nope");
});
所以我拆分了原始名称以摆脱(值、项目、其他),然后我尝试计算真假属性。如果两者都有,则显示一条消息,否则,没有。
出了点问题,但我不明白是什么。有什么想法吗?
【问题讨论】:
-
你从哪里得到
forEach? -
@NinaScholz 修改了它
-
最后的 if 语句不应该在循环之外。你得到什么输出?
-
我得到的错误是
bigObject.forEach is not a function -
您会收到该错误,因为
forEach用于数组而不是对象文字
标签: javascript loops for-loop foreach iterator