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

How to replace undefined values with empty string in an array object?

数组对象:

 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 "
        }]
    }

预期解决方案:

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 "
    }]
}

是否有使用 underscore.js 执行此操作的解决方案?有什么想法吗?优雅的解决方案?

这是一个非常快速的解决方案,我没有对其进行基准测试,但请参阅下面或 jsbin 上的解决方案:https://jsbin.com/xinuyi/2/edit?html,js,output

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 "
   }]
};

var updatedList = _.map(jsonList.list, function(object, index) {
    return _.mapObject(object, function(val, key) {
        return (val === undefined) ? "" : val;
    });  
});

你可以用这个

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

Demo Link Here

对于延迟,我们深表歉意,如果您不关心修改现有数组及其值,那么这在性能方面可能会快得多。如果你可以使用 vanilla js 本机做任何事情,那么在我看来,这应该始终用于任何库。

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

你可以在这里看到jsbin上的最新版本https://jsbin.com/xinuyi/3/edit?html,js,output