[英]Filter and assign object from an array to another object
我有特定的 object 需要從另一個數組中獲取,即hexCode
這是我正在過濾的數據
{
dateCreated: "2019-10-30 08:29:54 PM"
hexCode: "#ed4c67"
id: 1
leaveTag: "Vacation Leave"
leaveTagColor: "Bara Red"
}
{
dateCreated: "2019-10-30 08:30:05 PM"
hexCode: "#ea2027"
id: 2
leaveTag: "Sick Leave"
leaveTagColor: "Red Pigment"
}
這是我要插入 hexCode 的數據。 並映射leaveType
以將其與上面的數據進行比較。 這可能嗎?
{
leaveType: "Emergency Leave"
email: "sfe.bruce.logan@gmail.com"
hexCode: ???
}
{
leaveType: "Sick Leave"
email: "sfe.bruce.logan@gmail.com"
hexCode: ???
}
您可以簡單地進行如下查找,但在這種情況下時間復雜度更高(盡管可讀性更高且沒有空間復雜度)
或者,您可以從第一個數據數組創建一個 leaveType leaveType: hexCode
類型的 Map,然后使用 Map 找到相應的值並填充第二個數組。 檢查@CodeManiac 對這種方法的回答。
const data = [{ dateCreated: "2019-10-30 08:29:54 PM", hexCode: "#ed4c67", id: 1, leaveTag: "Vacation Leave", leaveTagColor: "Bara Red" }, { dateCreated: "2019-10-30 08:30:05 PM", hexCode: "#ea2027", id: 2, leaveTag: "Sick Leave", leaveTagColor: "Red Pigment" }] const arr = [{ leaveType: "Emergency Leave", email: "sfe.bruce.logan@gmail.com", }, { leaveType: "Sick Leave", email: "sfe.bruce.logan@gmail.com" }] arr.forEach(leave => { const matchedLeave = data.find(lv => lv.leaveTag === leave.leaveType); if(matchedLeave) { leave.hexCode = matchedLeave.hexCode; } }); console.log(arr);
您可以使用Map
和map
leaveTag
到相應hexCode
leaveType
中是否存在Map
如果存在,則使用Map
中的值,否則保留原始值 const data = [{dateCreated: "2019-10-30 08:29:54 PM",hexCode: "#ed4c67",id: 1,leaveTag: "Vacation Leave",leaveTagColor: "Bara Red"}, {dateCreated: "2019-10-30 08:30:05 PM",hexCode: "#ea2027",id: 2,leaveTag: "Sick Leave",leaveTagColor: "Red Pigment",}] const desiredFormat = [{leaveType: "Emergency Leave",email: "sfe.bruce.logan@gmail.com",hexCode: ''}, {leaveType: "Sick Leave",email: "sfe.bruce.logan@gmail.com",hexCode: ''}] const mapper = new Map(data.map(({leaveTag,hexCode}) => [leaveTag, hexCode])) const final = desiredFormat.map(({ hexCode, ...rest }) => { return {...rest, hexCode: mapper.get(rest.leaveType) || hexCode } }) console.log(final)
我的方法只使用數組 map
const obj1 = [{ dateCreated: "2019-10-30 08:29:54 PM", hexCode: "#ed4c67", id: 1, leaveTag: "Vacation Leave", leaveTagColor: "Bara Red" }, { dateCreated: "2019-10-30 08:30:05 PM", hexCode: "#ea2027", id: 2, leaveTag: "Sick Leave", leaveTagColor: "Red Pigment" }] const obj2 = [{ leaveType: "Emergency Leave", email: "sfe.bruce.logan@gmail.com", hexCode: null }, { leaveType: "Sick Leave", email: "sfe.bruce.logan@gmail.com", hexCode: null }] const result = obj2.map(item => { const findedHex = obj1.find(o2item => o2item.leaveTag == item.leaveType) item.hexCode = findedHex && findedHex.hexCode || null; return item; }) console.log(result)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.