如何用数组对象中的空字符串替换未定义的值?
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});
对于延迟,我们深表歉意,如果您不关心修改现有数组及其值,那么这在性能方面可能会快得多。如果你可以使用 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
数组对象:
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});
对于延迟,我们深表歉意,如果您不关心修改现有数组及其值,那么这在性能方面可能会快得多。如果你可以使用 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