【问题标题】:How to count the content of a javascript object which exists multple times如何计算多次存在的javascript对象的内容
【发布时间】:2021-02-18 08:04:54
【问题描述】:

所以我有一个包含大约 12 个边界框的页面,每个框都有 6 个复选框,当一个复选框被选中/取消选中时,一个对象正在使用 v-model 获取一个值。

现在我需要一个显示每个选中复选框数量的动态徽章。

以下对于每个边界框都是唯一的,我需要的是 selection[] 对象。 虽然我可以使用 Object.keys(selection).length 获得单个边界框的对象长度,但我真的不知道如何计算多个这些对象的长度。

                            v.clickboxes.push({
                                id:arraySelects[i].getAttribute('id'), 
                                x:bb.x,
                                y:bb.y,
                                width:bb.width,
                                height:bb.height,                          

                                settings:{
                                    selection:[],  
                                    }
                            });

我尝试计算选择对象的长度是创建一个方法,该方法在单击复选框时被调用,并且函数作为参数获取选择对象。

 badgenumber:function(selection)
                        {
                            var v = this;

                            v.badgeamount  = Object.keys(selection).length;

                            console.log(v.badgeamount);
                      
                        },

像这样,它总是只在当前边界框仍处于关闭状态时才获得选中的值,因为当您选中第一个复选框时,它的值为 0,而当您取消选中边界框时,它仍然计数。

有人告诉我使用 for 循环将所有选择对象中的所有元素一起计数,然后将其分配给一个变量,但我真的不知道该怎么做。

【问题讨论】:

    标签: javascript javascript-objects


    【解决方案1】:

    我想你有一个函数,一旦你选中一个框,你就会调用它!

    因此,您可以添加一个数组类型的属性 [在全局范围内],所有 12 个边界框都可以访问该属性,一旦您选中任何边界框内的一个框,您就可以到达该边界框之外以存储每个选定的数量该属性中的复选框。

    【讨论】:

    • 我试过了,我可以用 .push(selection) 计数,但我怎么能再次倒计时。或者更好地说,当方法被调用时,我如何检查不同的选择对象是否被分配了一个新元素?
    • 倒计时很简单,您可以在单击复选框时调用的函数开头添加 if-else 语句,并检查您单击的项目是否在全局范围属性中具有其数据数组类型,或者不是。如果找到,则使用 .findIndex() 函数获取其在该数组中的索引,然后使用 .splice() 函数从数组中删除其数据
    • 我试图这样做,但我在 if 语句中失败了,因为每个边界框的所有复选框都是相同的,并且它们都模拟相同的值,1-6。因此,例如,如果我将 .push(selection) 放入我的值为 1 的全局变量中,然后对于另一个框,我也将 1 放入全局变量中,我的 if 语句看起来如何只检查一个“1”并删除只有一个“1”。
    • 对每个具有参数(复选框值,边界框,...)的复选框使用一个函数,并且在函数内部您可以将您已经从该函数中获得的内容推送到数组跨度>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 2020-11-20
    • 2011-10-06
    相关资源
    最近更新 更多