我需要字段的元数据。 喜欢这段代码。
var fields = [
{ code: 'name', display: 'Name', isActive: true },
{ code: 'tel', display: 'Telephone Number', isActive: true },
{ code: 'mobile', display: 'Mobile', isActive: true },
{ code: 'email', display: 'Email address', isActive: true },
{ code: 'nickname', display: 'Nickname', isActive: true },
];
有许多领域,所以我很累。 如何写没有属性名称? 我想要像下一个代码那样的流程。
var fieldsString = "
code | display | isActive
'name' | 'Name' | true
'tel' | 'Telephone Number' | true
'mobile' | 'Mobile' | true
'email' | 'Email address' | true
'nickname' | 'Nickname' | true
'tel' | 'Mobile' | true
";
var tableData = new TableData(fieldsString);
var fields = tableData.getData();
谁知道上面代码的表数据格式?
答案 0 :(得分:1)
二维数组可以解决这个问题
var keysArray = ['code','display','isActive'];
var fieldArray = [
['name' , 'Name' , true ],
['tel' , 'Telephone Number', true ],
['mobile' , 'Mobile' , true ],
['email' , 'Email address' , true ],
['nickname', 'Nickname' , true ],
['tel' , 'Mobile' , true ]
];
然后只需使用数组的map函数转换为基于对象的表示Array.prototype.map
var fields=fieldArray.map(function (current) {
var tempobj = {};
for(var i=0, len=keyArray.length; i<len; i++){
tempobj[keyArray[i]] = current[i];
}
return tempobj;
}
你可以通过调用reduce Array.protoype.reduce替换tempobj和for循环来使这更简洁