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

同じキー値を持つJavaScriptオブジェクトをマージし、それらをカウントします


このようなオブジェクトの配列があるとします-

const arr = [{
   "value": 10,
   "id": "111",
   "name": "BlackCat",
}, {
   "value": 10,
   "id": "111",
   "name":
   "BlackCat",
}, {
   "value": 15,
   "id": "777",
   "name": "WhiteCat",
}];

そのような配列を1つ取り込むJavaScript関数を作成する必要があります。

次に、関数は、「id」プロパティに共通の値を持つすべてのオブジェクトをマージする必要があります。

したがって、上記の配列の場合、出力は次のようになります-

const output = [{
   "value": 10,
   "id": "111",
   "name": "BlackCat",
   "count": 2,
}, {
   "value": 15,
   "id": "777",
   "name": "WhiteCat",
   "count": 1,
}]

const arr = [{
   "value": 10,
   "id": "111",
   "name": "BlackCat",
}, {
   "value": 10,
   "id": "111",
   "name": "BlackCat",
}, {
   "value": 15,
   "id": "777",
   "name": "WhiteCat",
}];
const combinedItems = (arr = []) => {
   const res = arr.reduce((acc, obj) => {
      let found = false;
      for (let i = 0; i < acc.length; i++) {
         if (acc[i].id === obj.id) {
            found = true;
            acc[i].count++;
         };
      }
      if (!found) {
         obj.count = 1;
         acc.push(obj);
      }
      return acc;
   }, []);
   return res;
}
console.log(combinedItems(arr));

出力

そして、コンソールの出力は-

になります
[
   { value: 10, id: '111', name: 'BlackCat', count: 2 },
   { value: 15, id: '777', name: 'WhiteCat', count: 1 }
]

  1. 文字列キーを使用してネストされたJavaScriptオブジェクトにアクセスする

    lodashのgetメソッドを使用して、任意のレベルのプロパティを安全に取得できます。第1レベルのプロパティを取得するのは非常に簡単です。ネストされたプロパティへのアクセスには注意が必要です。lodashなどのテスト済みのライブラリを使用する必要があります。 次の方法で、深くネストされたオブジェクトにアクセスできます- 例 let _ = require("lodash"); let obj = {    a: {       b: {          foo: &quo

  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>   &nbs