🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

Q&A

解決済

2回答

965閲覧

配列の件数を取得したい

inukujira

総合スコア130

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

TypeScript

TypeScriptは、マイクロソフトによって開発された フリーでオープンソースのプログラミング言語です。 TypeScriptは、JavaScriptの構文の拡張であるので、既存の JavaScriptのコードにわずかな修正を加えれば動作します。

0グッド

1クリップ

投稿2021/02/12 02:37

すみません。教えてください。
以下の配列があります。

TypeScript

1const tags = [ 2 { 3 "indices": { 4 "start": 7, 5 }, 6 "cssClass": "pink" 7 }, 8 { 9 "indices": { 10 "start": 86, 11 }, 12 "cssClass": "blue" 13 }, 14 { 15 "indices": { 16 "start": 114, 17 }, 18 "cssClass": "blue" 19 } 20]

この値から件数を取得してpinkは1件blueは2件をいう結果が欲しいです。
Object.keysを使ってうまい具合にcssClassから抽出できればいいなと思ってたんですが思うようにいかず...。

TypeScript

1console.log(Object.keys(this.tags).length);

どなたかわかる方ご教示の程よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi_takatsuk

2021/02/12 02:41

あくまでTypeScript上で、ということでよろしいでしょうか? (型の制約があるため、若干難易度変わる)
guest

回答2

0

ベストアンサー

TypeScriptならば、下記のように、
型を定義した方が、圧倒的に処理がしやすいでしょう。

typescript

1interface Indices { 2 start: number 3}; 4 5interface Tag { 6 indices: Indices, 7 cssClass: string 8}; 9 10 11const tags: Tag[] = [ 12 { 13 indices: { 14 start: 7 15 }, 16 cssClass: "pink" 17 }, 18 { 19 indices: { 20 start: 86, 21 }, 22 cssClass: "blue" 23 }, 24 { 25 indices: { 26 start: 114, 27 }, 28 cssClass: "blue" 29 } 30]; 31 32const count: {[key: string]: number} = tags.reduce((acc, cur) => { 33 if (cur.cssClass in acc) { 34 acc[cur.cssClass]++; 35 } else { 36 acc[cur.cssClass] = 1; 37 } 38 return acc; 39}, {});

JavaScriptならば、interfaceなど、型の定義部分を外すだけでいけるかと。

投稿2021/02/12 03:02

miyabi_takatsuk

総合スコア9555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

inukujira

2021/02/12 05:39

ありがとうございます!無事に思ったような実装ができました!
guest

0

javascript

1const count=Object.fromEntries([...new Set(tags.map(x=>x.cssClass))].map(x=>[x,tags.filter(y=>y.cssClass==x).length])); 2console.log(count);

投稿2021/02/12 02:55

yambejp

総合スコア116661

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問