簡體   English   中英

想要合並 javascript 中具有相同鍵但不同值的兩行

[英]Want to merge two line with same keys but different values in javascript

我有一個 javascript 字符串數組,由 nodejs 處理以更改 output。 需要合並相同字符串前綴的值。

我有的:

[
"$button-primary-font-color-default: ('light':#000);",
"$button-primary-font-color-default: ('dark':#fff);"
]

我想要的是:

["$button-primary-font-color-default: ('light':#000, 'dark':#fff);"]

我試過 array.filter 沒有成功。 我對正則表達式不太擅長。

感謝您對此的任何幫助。

首先,例如,我創建一個 object 以將每個鍵與其值的數組分組。

{
   "$button-primary-font-color-default:": ["'light':#000", "'dark':#fff"]
}

然后我map編輯為 object 為字符串格式。

 const data = [ "$button-primary-font-color-default: ('light':#000);", "$button-primary-font-color-default: ('dark':#fff);" ] const obj = data.reduce((acc, i) => { const key = i.match(/\$.*?:/) const [_, value] = i.match(/\(('\w+':#[0-9a-f]{3})\);/i) if (acc[key]) { acc[key] = [...acc[key], value] } else { acc[key] = [value] } return acc }, {}) const result = Object.entries(obj).map(([key, value]) => { return `${key} (${value.join(', ')})` }) console.log(result)

使用reduce方法按屬性名稱分組。 然后將解決方案展平為所需的格式。 這與其他答案類似,只是屬性更通用一點。

 var input = [ "$button-primary-font-color-default: ('light':#000);", "$button-primary-font-color-default: ('dark':#fff);", "$button-secondary-font-color-default: ('secondary':red);" ]; var step1 = input.reduce(function(agg, line) { var prop = line.slice(0, line.indexOf(':')).trim(); var value = line.slice(line.indexOf(':') + 1, line.indexOf(';')).trim().slice(1, -1); agg[prop] = agg[prop] || [] agg[prop].push(value) return agg; }, {}) var result = Object.entries(step1).map(function([prop,value]) { return prop + " " + "(" + value.join(", ") + ")"; }); console.log(result)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM