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 以在多個空格上拆分輸入行。
添加回答
舉報