如何用数组对象中的空字符串替换未定义的值?

SVK*_*SVK 0 javascript arrays json underscore.js

数组对象:

 var jsonList= {
        "list": [{
            "COLUMN_NAME": "control_master_id",
            "REFERENCED_COLUMN_NAME": "control_master_id",
            "REFERENCED_TABLE_NAME": "tbi_controls_master",
            "TABLE_NAME": "tbi_widget_controls"
        }, {
            "COLUMN_NAME": "authorization_id",
            "REFERENCED_COLUMN_NAME": "authorization_id",
            "REFERENCED_TABLE_NAME": "tbi_authorization_master",
            "TABLE_NAME": "tbi_controls_master"
        }, {
            "COLUMN_NAME": undefined,
            "REFERENCED_COLUMN_NAME": undefined,
            "REFERENCED_TABLE_NAME": undefined,
            "TABLE_NAME": "tbi_widget_controls "
        }]
    }
Run Code Online (Sandbox Code Playgroud)

预期的解决方案:

var jsonList={
    "list": [{
        "COLUMN_NAME": "control_master_id",
        "REFERENCED_COLUMN_NAME": "control_master_id",
        "REFERENCED_TABLE_NAME": "tbi_controls_master",
        "TABLE_NAME": "tbi_widget_controls"
    }, {
        "COLUMN_NAME": "authorization_id",
        "REFERENCED_COLUMN_NAME": "authorization_id",
        "REFERENCED_TABLE_NAME": "tbi_authorization_master",
        "TABLE_NAME": "tbi_controls_master"
    }, {
        "COLUMN_NAME": "",
        "REFERENCED_COLUMN_NAME": "",
        "REFERENCED_TABLE_NAME": "",
        "TABLE_NAME": "tbi_widget_controls "
    }]
}
Run Code Online (Sandbox Code Playgroud)

有没有任何解决方案可以使用underscore.js?任何想法?优雅的解决方

Shr*_*Pai 7

你可以用它

var updatedList = JSON.stringify(jsonList.list, function (key, value) {return (value === undefined) ? "" : value});
Run Code Online (Sandbox Code Playgroud)

演示链接在这里

  • 值得注意的是[JSON.stringify](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify)返回的是字符串,而不是对象。您需要调用[JSON.parse](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse)将其转换回对象。 (2认同)

Jon*_*isp 4

对于延迟表示歉意,如果您不关心修改现有数组及其值,那么这可能会提高性能。如果您可以使用 vanilla js 本地执行任何操作,那么在我看来,这应该始终用于任何库。

jsonList.list.forEach(function(obj) {
  for(var i in obj) { 
    if(obj[i] === undefined) {
      obj[i] = '';
    }
  }
});
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看 jsbin 的最新版本https://jsbin.com/xinuyi/3/edit?html,js,output