代码之家  ›  专栏  ›  技术社区  ›  Naomi

计算保持空的列的类型

  •  0
  • Naomi  · 技术社区  · 6 年前

    我读过这个问题的答案 why is typeof null "object"? 我正试图找出一个具体问题的解决方案。

    我正在为前端的AngularJS和服务器代码的ASP.NET MVC开发一个Web应用程序。我们将模型传递到前端,然后将值更新回来。以下是我试图找到解决方案的情况:

    当我们使用Web界面中的退格键从输入type=“number”中删除数字时,输入控件的值将变为空。在我们的模型中,数值被定义为不可为空(在我们的数据库中,字符串也应该转换为空值而不是空值)。

    我试图找出一种方法,如果键是数字的,将其设置为0;如果键是字符串,则将其设置为空字符串。

    我添加了一个名为verifyinput的新方法,下面是代码的开头:

    /**
         * @returns true or false 
         * */
        Model.prototype.verifyInput = function () {
            for (let i = 0; i < this.keys.length; i++) {
                const key = this.keys[i];
    
                if (this[key] === null) {
                    this[key] = 
                }
            }
        }

    我不知道怎么写上面的方法。我已经发现我不能使用typeof或lodash方法来检查键的类型,因为它是返回对象。我需要将数字设置为0,将字符串设置为空字符串,但不必设置日期时间值。你看到我的问题了吗?你有解决办法吗?也许我应该在这里使用Try/Catch?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Naomi    6 年前

    我删除这些钥匙的想法似乎奏效了。我得到了正确的行为(例如,在这种情况下,服务器的值会自动变为0)。

    我添加了以下代码:

    Model.prototype.verifyInput = function () {
    
            let i = this.keys.length;
            while (i--) {
                const key = this.keys[i];
    
                if (this[key] === null) {
                    this.keys.splice(i, 1); // Let's remove the null element from the model
                }            
            }
    
            return true;
        }

    基于我发现的另一个非常有用的答案 Looping through array and removing items, without breaking for loop 到目前为止,我做的测试,效果很好。