获取 API 响应对象并替换(映射)所有键
Take an API response object and replace (map) all the keys
我正在向JavaScript项目添加一些API,以用查找替换过去的多字段手动数据输入。(例如,我们希望停止询问您有关汽车的 20 个问题,而只需询问您的 VIN 并自动填充来自 VIN 解码器的其他 19 个答案。
我花费的时间比我希望将数据从响应架构映射到应用的现有内部架构的时间要多。 许多工作都需要人性化的接触来找出同义词,例如:
internal.postal_code = api.zipCode;
有时我发现自己写了一个非常粗糙的if
,以避免有时在深树的半路上null
或丢失的对象,比如
if(api.a && api.a.b && api.a.b.c){
internal.z = api.a.b.c.d;
}
有没有一个好的图书馆可以让我写一个简单的地图并为我完成所有这些工作? 地图可能如下所示:
map = {
'zipCode' : 'postal_code',
'a.b.c.d' : 'z'
};
mapperTool( api, internal, map );
(请注意,internal
对象是从多个 API 和预先存在的工具拼接在一起的,因此在internal
上添加或覆盖属性比输出新对象更好。
试试这个:
function mapperTool(source, desc, map) {
Object.keys(map).forEach(function(key) {
var value = key.split('.').reduce(function(obj, name) {
if (obj && obj[name]) {
return obj[name];
}
}, source);
desc[map[key]] = value;
});
}
var map = {
'zipCode' : 'postal_code',
'a.b.c.d' : 'z'
};
var internal = {};
mapperTool({a:{b:{c:{d: 10}}},zipCode:20}, internal, map);
document.body.innerHTML = '<pre>' + JSON.stringify(internal, true, 4) + '</pre>';
相关文章:
- 无法从 jQuery RSS Feed 中的 localStorage 动态替换类
- 如何在映射数组中添加换行符
- ng映射方向备选方案
- 我如何找到一个句子中的所有空格并替换忽略它们
- 无法通过数组映射绑定
- 如何用更合适的内容替换document.write
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 是否有任何方法可以使用jQuery替换在数组中定义值的文本
- 在DOM中查找一个模式并替换它's的内容使用jquery
- 用空格替换下划线PHP
- str.split(someString).join(someOtherString)是否等效于替换
- 使用Scala Play Framework视图中的键检索映射值
- 使用javascript的图像替换循环
- window.location替换并传递URL历史记录条目中的变量
- 替换标记中的属性
- 指令的模板必须只有一个根元素:With restrict E&替换true
- 获取 API 响应对象并替换(映射)所有键
- 将数组映射变量替换为实际的变量名称/字符串
- 如何在 Javascript 中映射替换字符,类似于 Perl 中的“tr”函数
- 字符串替换数组映射