我有這 2 個陣列,
const firstArray = [
{
key: 'a',
value: 'a'
},
{
key: 'b',
value: 'b'
},
{
key: 'c',
value: 'c'
}
]
const secondArray = [
{
key: 'b',
value: 'd'
},
{
key: 'c',
value: 'e'
}
]
我想合并這兩個陣列,如果在第二個陣列上找到相同的鍵,第二個陣列值將替換第一個陣列值
新陣列應如下所示
const expectedArray = [
{
key: 'a',
value: 'a'
},
{
key: 'b',
value: 'd'
},
{
key: 'c',
value: 'e'
}
]
uj5u.com熱心網友回復:
正如我lodash在你的標簽中看到的,我假設你想使用它。
你可以使用這樣的東西:
var merged = _(firstArray)
.concat(secondArray)
.groupBy("key")
.map(_.spread(_.merge))
.value();
它基本上將具有相同鍵的所有物件分組到一個陣列中groupBy("key"),然后將每個值陣列展平,合并它們并使用最后一個值.map(_.spread(_.merge))。
如果你想完全理解這個程序,我建議把最后的贊注釋掉,看看所有的中間步驟,這很有趣!
const firstArray = [{
key: 'a',
value: 'a'
},
{
key: 'b',
value: 'b'
},
{
key: 'c',
value: 'c'
}
]
const secondArray = [{
key: 'b',
value: 'd'
},
{
key: 'c',
value: 'e'
}
]
var merged = _(firstArray)
.concat(secondArray)
.groupBy("key")
.map(_.spread(_.merge))
.value();
console.log(merged);
<script src="https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min.js"></script>
uj5u.com熱心網友回復:
沒有的解決方案lodash是遍歷第二個陣列并只查找匹配項。
如果沒有匹配項,則將專案推送到第一個陣列。
如果匹配,則將第一個陣列中的專案替換為第二個陣列中的專案。
const mergedArray = [...firstArray]
secondArray.forEach(newItem => {
const matchIndex = mergedArray.findIndex(prevItem => prevItem.key === newItem.key)
if (matchIndex === -1) {
mergedArray.push(newItem)
} else {
mergedArray[matchIndex] = newItem
}
})
uj5u.com熱心網友回復:
const mergedArray = [...secondArray, ...firstArray];
const lengthOfUniqueArray = new Set(mergedArray.map((item) => item.key)).size;
const expectedArray = newArray.slice(0, lengthOfUniqueArray);
expectedArray 將是你想要的。
uj5u.com熱心網友回復:
您可以通過鍵連接、反向、可以所有唯一元素,然后反向回傳:
const { flow, concat, reverse, uniqBy } = _
const mergeArrays = flow(
concat,
reverse,
arr => uniqBy(arr, 'key'),
reverse
)
const firstArray = [{"key":"a","value":"a"},{"key":"b","value":"b"},{"key":"c","value":"c"}]
const secondArray = [{"key":"b","value":"d"},{"key":"c","value":"e"}]
var merged = mergeArrays(firstArray, secondArray)
console.log(merged)
<script src="https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min.js"></script>
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/321555.html
標籤:javascript 数组 洛达什
上一篇:從另一個陣列的內容中過濾陣列
