两个对象按键搜索和交换值

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
    )