javascript - 如何从javascript中的数组键名中获取匹配的名称
问题描述
试图从数组键名中获取匹配的名称但不起作用。我有两个类似数组的列和项目。我不知道如何将数组键名与列名单词匹配并将其分配给字段值。如果有人知道,请帮助找到解决方案。
var column = ['File Name', 'Sur Name', 'Last Name', 'Place Of Work', 'Work Id'];
var newColumn = [];
var item = [
{
fileName: 'test1',
surName: 'test1',
lastName: 'test1',
placeOfWork: 'test1',
workId: 'test1'
}
];
column.forEach(e => {
newColumn.push({
label: e,
field: function(){
if(item.keys( e.toLowerCase() == item.keys().toLowerCase())) return item.keys();
}
});
});
console.log(newColumn);
输出应该是:
newSolumn= [
{label:'First Name',field:'fileName'},
{label:'Sur Name',field:'surName'},
{label:'Last Name',field:'lastName'},
{label:'Place Of Work',field:'placeOfWork'},
{label:'Work Id',field:'workId'}
];
解决方案
您不需要在创建的对象中将函数作为值,您需要调用它而不是将其分配为值,并且您还需要删除字符串中的空格以便比较它们,我使用函数替换删除无用的空格。
var column = ['File Name', 'Sur Name', 'Last Name', 'Place Of Work', 'Work Id'];
var newColumn = [];
var item = [
{
fileName: 'test1',
surName: 'test1',
lastName: 'test1',
placeOfWork: 'test1',
workId: 'test1'
}
];
column.forEach(e => {
newColumn.push({
label: e,
field: getField(e)
});
});
function getField(columnName) {
for (key in item[0]) {
if (
columnName.replace(/\s/g, '').toLowerCase() ===
key.replace(/\s/g, '').toLowerCase()
) {
return key;
}
}
}
console.log(newColumn);
推荐阅读
- r - 按 R 中的不同列值求和,忽略重复值
- mongodb - 您可以创建一个虚拟而不是在模型(猫鼬)中添加直接引用吗?
- java - 在 JAXB 中隐藏某些 XmlElements
- java - 通过服务器下载文件进程,使用 HtmlUnit
- c++ - libstdc++ std::(multi)set/map 中是否存在 8 字节大小开销的原因?
- php - 使用 MEDOO 的顺序
- javascript - 在测试自动化触发摄像头录制后,在开始播放模拟视频之前等待(t 秒)或来自服务的信号
- javascript - 反应条件渲染不触发?
- javascript - POST请求分页、排序结果
- php - 无法移除显示样式