我有兩個具有相同鍵的 Javascript 物件,但obj1中具有某些值的鍵在obj2中為空,反之亦然。兩個物件中也可能有空鍵。
obj1 = {
a: 1,
b: 2,
c: ' ',
d: ' ',
e: ' '
}
obj2 = {
a: ' ',
b: ' ',
c: 3,
d: 5,
e: ' '
}
我想要一個組合物件,其中包含來自兩個物件的值的鍵,如果兩個鍵都是空的,它只是將其放置為空
Expected result:
result = {
a: 1,
b: 2,
c: 3,
d: 5,
e: ' '
}
我試過使用擴展運算子,但第二個物件總是優先于第一個:> {...obj1, ...obj2}
uj5u.com熱心網友回復:
您可以利用Object.keys方法和方法reduce來創建結果物件
let obj1 = {
a: 1,
b: 2,
c: ' ',
d: ' ',
e: ' '
}
let obj2 = {
a: ' ',
b: ' ',
c: 3,
d: 5,
e: ' '
}
let result = Object.keys(obj1).reduce((acc, curr) => {
val = obj1[curr] != " " ? obj1[curr] : obj2[curr];
return { ...acc,
...{
[curr]: val
}
}
}, {})
console.log(result)
uj5u.com熱心網友回復:
您必須構建一個通用的組合物件,然后遍歷每個其他物件,如果不為空,則添加該值
obj1 = {
a: 1,
b: 2,
c: ' ',
d: ' ',
e: ' '
}
obj2 = {
a: ' ',
b: ' ',
c: 3,
d: 5,
e: ' '
}
// Combine the two to get all keys into the combined object
var combined = { ...obj1, ...obj2 };
// Set each value in the combined object to a single spaced string
for (let key in combined) {
combined[key] = ' ';
}
// Loop through each item in obj1 and add to combined if a single spaced string
for (let key in obj1) {
if (obj1[key] !== ' ') combined[key] = obj1[key];
}
// Loop through each item in obj2 and add to combined if a single spaced string
for (let key in obj2) {
if (obj2[key] !== ' ') combined[key] = obj2[key];
}
console.log(combined)
uj5u.com熱心網友回復:
Object.fromEntries(Object.entries(obj1).map(e=>([e[0], obj1[e[0]]!=' '?obj1[e[0]]:obj2[e[0]]])))
uj5u.com熱心網友回復:
您可以過濾物件并傳播第一個和過濾的物件。
const
filter = o => Object.fromEntries(Object.entries(o).filter(([, v]) => v !== ' ')),
obj1 = { a: 1, b: 2, c: ' ', d: ' ', e: ' ' },
obj2 = { a: ' ', b: ' ', c: 3, d: 5, e: ' ' },
result = { ...obj1, ...filter(obj2) };
console.log(result);
uj5u.com熱心網友回復:
var obj1 = {
a: 1,
b: 2,
c: ' ',
d: ' ',
e: ' '
}
var obj2 = {
a: ' ',
b: ' ',
c: 3,
d: 5,
e: ' '
}
/* in case your objects are not same length */
var longObj = obj1;
var shortObj = obj2;
if(Object.keys(obj1).length < Object.keys(obj2).length) {
longObj = obj2;
shortObj = obj1;
}
for(let k in shortObj) {
longObj[k] = longObj[k] !== ' ' ? longObj[k] : shortObj[k];
}
console.log(longObj);
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/415972.html
標籤:
上一篇:陣列中有多少個數小于或等于x?
下一篇:Vuejs:從子組件訪問父方法
