两个对象按键搜索和交换值
two object search by key and swap value
我想用 objectA 值替换 objectB 键。
在交换之前,objectA 和 ObjectB 键应该在每个对象中匹配。
然后 return objectC 中的数据。
我看到了这个帖子,但我只想在交换键和值之前匹配键。
Swap key with value JSON
像这样
var objA ={100:'new',200:'in progress',300:'done',500:'exception',225:'critical'};
var objB ={100:12,200:5,300:50};
objectA 和 objectB 具有相同的键。
objectA key是statusID,value是显示用户的statusID名称。
objectB key是statusID,value是statusIDcount.so这个计数值是sample.
所以首先,我想要 objectA 和 objectB 键 matching.this 次,100,200,300 是相同的键。
如果它们匹配,则匹配的 objectA 键值替换 objectB 键。
比如,key 100 被匹配,objectB key 100 应该变成 'new'。那么最后,objectC的结果应该是这样的。
var objC ={'new':12,'in progress':5,'done':50};
欢迎任何建议。
感谢阅读。
您应该将此视为创建一个新对象,该对象组合了来自其他两个对象的数据。您可以通过在 objB
:
中的键数组上调用 reduce()
来做您想做的事
objC = objB.keys().reduce(result, key => {
result[objA[key]] = objC[key];
return result;
});
哎呀,我不知道你在做什么 -
const heck = (a = {}, b = {}) =>
Object
.entries(a) // using all entries from either object ...
.reduce // reduce each ...
( (r, [ k, v ]) => // result, r, and key/value pair
b[k] === undefined // if key does not exist in other object
? r // continue with current result
: { ...r, [v]: b[k] } // otherwise extend result with new key/value
, {} // initial result
)
const objA =
{100:'new', 200:'in progress', 300:'done', 500:'exception', 225:'critical'}
const objB =
{100:12, 200:5, 300:50}
console.log(heck(objA, objB))
// { "new": 12
// , "in progress": 5
// , "done": 50
// }
这是另一种写法,可能更容易理解。缺点是它做了一些不必要的迭代 -
const heck = (a = {}, b = {}) =>
Object.fromEntries // create new object from ...
( Object
.keys(a) // all keys of either object
.filter(k => b[k] !== undefined) // filter out non-matches in other
.map(k => [ a[k], b[k] ]) // new [key, value] pair
)
我想用 objectA 值替换 objectB 键。 在交换之前,objectA 和 ObjectB 键应该在每个对象中匹配。 然后 return objectC 中的数据。
我看到了这个帖子,但我只想在交换键和值之前匹配键。 Swap key with value JSON
像这样
var objA ={100:'new',200:'in progress',300:'done',500:'exception',225:'critical'};
var objB ={100:12,200:5,300:50};
objectA 和 objectB 具有相同的键。
objectA key是statusID,value是显示用户的statusID名称。
objectB key是statusID,value是statusIDcount.so这个计数值是sample.
所以首先,我想要 objectA 和 objectB 键 matching.this 次,100,200,300 是相同的键。
如果它们匹配,则匹配的 objectA 键值替换 objectB 键。 比如,key 100 被匹配,objectB key 100 应该变成 'new'。那么最后,objectC的结果应该是这样的。
var objC ={'new':12,'in progress':5,'done':50};
欢迎任何建议。 感谢阅读。
您应该将此视为创建一个新对象,该对象组合了来自其他两个对象的数据。您可以通过在 objB
:
reduce()
来做您想做的事
objC = objB.keys().reduce(result, key => {
result[objA[key]] = objC[key];
return result;
});
哎呀,我不知道你在做什么 -
const heck = (a = {}, b = {}) =>
Object
.entries(a) // using all entries from either object ...
.reduce // reduce each ...
( (r, [ k, v ]) => // result, r, and key/value pair
b[k] === undefined // if key does not exist in other object
? r // continue with current result
: { ...r, [v]: b[k] } // otherwise extend result with new key/value
, {} // initial result
)
const objA =
{100:'new', 200:'in progress', 300:'done', 500:'exception', 225:'critical'}
const objB =
{100:12, 200:5, 300:50}
console.log(heck(objA, objB))
// { "new": 12
// , "in progress": 5
// , "done": 50
// }
这是另一种写法,可能更容易理解。缺点是它做了一些不必要的迭代 -
const heck = (a = {}, b = {}) =>
Object.fromEntries // create new object from ...
( Object
.keys(a) // all keys of either object
.filter(k => b[k] !== undefined) // filter out non-matches in other
.map(k => [ a[k], b[k] ]) // new [key, value] pair
)