Javascript
 Computer >> コンピューター >  >> プログラミング >> Javascript

オブジェクトをマージし、JavaScriptで単一のプロパティを合計します


たとえば、会社の一部の製品に関する情報を含むオブジェクトの配列が2つあるとします-

const first = [
   {
      id: "57e7a1cd6a3f3669dc03db58",
      quantity:3
   },
   {
      id: "57e77b06e0566d496b51fed5",
      quantity:3
   },
   {
      id: "57e7a1cd6a3f3669dc03db58",
      quantity:3
   },
   {
      id: "57e77b06e0566d496b51fed5",
      quantity:3
   }
];
const second = [
   {
      id: "57e7a1cd6a3f3669dc03db58",
      quantity:6
   },
   {
      id: "57e77b06e0566d496b51fed5",
      quantity:6
   }
];

ここで、2つの配列をマージする関数を作成する必要があります。これにより、同じIDを持つオブジェクトが繰り返し出現せず、さらに、objectsduplicateidのquantityプロパティが一緒に追加されます。

したがって、この関数のコードを書いてみましょう-

const first = [
   {
      id: "57e7a1cd6a3f3669dc03db58",
      quantity:3
   },
   {
      id: "57e77b06e0566d496b51fed5",
      quantity:3
   },
   {
      id: "57e7a1cd6a3f3669dc03db58",
      quantity:3
   },
   {
      id: "57e77b06e0566d496b51fed5",
      quantity:3
   }
];
const second = [
   {
      id: "57e7a1cd6a3f3669dc03db58",
      quantity:6
   },
   {
      id: "57e77b06e0566d496b51fed5",
      quantity:6
   }
];
const mergeArray = (first, second) => {
   return [...first, ...second].reduce((acc, val, i, arr) => {
      const { id, quantity } = val;
      const ind = acc.findIndex(el => el.id === id);
      if(ind !== -1){
         acc[ind].quantity += quantity;
      }else{
         acc.push({
            id,
            quantity
         });
      }
      return acc;
   }, []);
}
console.log(mergeArray(first, second));

出力

コンソールの出力は-

になります
[
   { id: '57e7a1cd6a3f3669dc03db58', quantity: 12 },
   { id: '57e77b06e0566d496b51fed5', quantity: 12 }
]

  1. JavaScriptでオブジェクトプロパティ名の配列を置き換える

    以下は、JavaScriptでオブジェクトプロパティ名の配列を置き換えるコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style&g

  2. JavaScriptを使用してオブジェクトを単一のオブジェクト配列にマージする方法は?

    以下は、オブジェクトを単一のオブジェクト配列にマージするコードです- 例 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> <style>