2 回答
TA贡献1884条经验 获得超4个赞
如果您事先制作了一个属性数组,则可以使用Object.fromEntries将每个拆分项映射到要创建的对象中的一个条目:
const tsv = `1 Jim Robinson Company Co. Active
2 Fred Jimmyson Examples Inc. Inactive
3 Rob Freddison Company Co. Active`;
const properties = ['id', 'name', 'company', 'status'];
const badgeTable = tsv.split('\n').map(
e => Object.fromEntries(
e.split(/\s{2,}/)
.map((value, i) => [properties[i], value])
)
);
console.log(badgeTable);
(我在上面的代码片段中分开/\s{2,}/
只是为了让代码片段运行,因为 Stack Exchange 将您的制表符呈现为空格并且制表符空白存在问题 - 您的原始代码\t
在您的实际代码中可以正常工作)
TA贡献1828条经验 获得超4个赞
您可以reduce()在遍历数组元素时使用填充对象。
reduce()接收数组索引作为第三个参数,这可用于索引属性名称的数组。
const tsv = `1 Jim Robinson Company Co. Active
2 Fred Jimmyson Examples Inc. Inactive
3 Rob Freddison Company Co. Active`;
const properties = ['id', 'name', 'company', 'status'];
const badgeTable = tsv.split('\n').map(
line => line.split(/\s{2,}/)
.reduce((obj, cur, i) => (obj[properties[i]] = cur, obj), {})
);
console.log(badgeTable);
我复制了@CertainPerformance 的 hack 以在多个空格上拆分输入行。
添加回答
举报