次の形式のオブジェクトを含むオブジェクトがあります。
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}
}
関数内でこのオブジェクトを使用して、属性の 1 つがブール値を変更するたびにチェックします。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");
});
そのため、元の名前を分割して (値、項目、その他) を取り除き、その後、true 属性と false 属性を数えようとしています。両方ある場合は、そうでないことを示すメッセージを表示します。
何かが間違っていますが、何がわかりません。何か案は?