質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JavaScript

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

Q&A

解決済

2回答

1990閲覧

Javascriptで構造体を入れた配列を作るには

seri

総合スコア422

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

JavaScript

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

0グッド

0クリップ

投稿2017/08/30 07:21

JavaScriptを書くことになったのですが、あまりJavaScriptに慣れておらずC#ばかり書いていまして、以下の用な配列をJavaScriptで作るにはどう書けばよろしいのでしょうか?

C#

1struct User{ 2 string name; 3 int User_id; 4 Vector3 Position; 5} 6 7struct Box{ 8 List<User> Users; 9 int Box_id; 10} 11 12List<Box> Boxes=new List<Box>(); 13 14void AddBox(User _u,int nom){ 15Boxes[nom].Uers.Add(_u); 16} 17

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

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

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

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

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

guest

回答2

0

C# に詳しくないので間違っているかもしれませんが、配列初期化子やオブジェクト初期化子で表現できる範疇ではないでしょうか。

JavaScript

1var users = [{name: 'taro', id: 1, position: 0}, {name: 'koichi', id: 2, position: 100}]

あるいは、型付言語的な仕組みが欲しいという事なのでしょうか。

JavaScript

1'use strict'; 2function User (name, id, position) { 3 this.name = String(name); 4 this.id = Number(position); 5 this.position = Number(position); 6} 7 8function Box ( /*arrayLike*/ ) { 9 if (arguments.length) { 10 var arrayLike = Object(arguments[0]); 11 12 for (var i = 0, len = arrayLike.length, user; i < len; ++i) { 13 if (Object.prototype.hasOwnProperty.call(arrayLike, i)) { 14 user = arrayLike[i]; 15 this.add(user.name, user.id, user.position); 16 } 17 } 18 } 19} 20 21Object.defineProperty(Box.prototype, 'add', { 22 writable: true, 23 enumerable: false, 24 configurable: true, 25 value: function add (name, id, position) { 26 return Array.prototype.push.call(this, new User(name, id, position)); 27 } 28}) 29 30var box1 = new Box(); 31box1.add('taro', 1, 0); 32box1.add('koichi', 2, 100); 33console.log(box1); 34 35var box2 = new Box([{name: 'taro', id: 1, position: 0}, {name: 'koichi', id: 2, position: 100}]); 36console.log(box2);

「seriさんがどういう設計を望んでいるのか」を日本語で書き表してみて下さい。
また、seriさんの分かる範疇でJavaScriptコードを書き、「コード上で足りない部分」を説明してみて下さい。

Re: seri さん

投稿2017/08/30 07:29

編集2017/08/30 07:59
think49

総合スコア18164

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

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

seri

2017/08/30 08:31

Listの挙動を知っているなら伝わるかと思いますが、配列の中味を指定位置から特定の数だけ削除やList同士の結合等の配列操作を柔軟にするための構造体込みの配列です。 JavaScriptがどのような配列が有るか詳しくは知りませんが、あらかじめ配列として、更には構造体を挿入可能な配列が有るか質問したかったとゆう解釈になりますね。
think49

2017/08/30 08:45 編集

> Listの挙動を知っているなら伝わるかと思いますが、配列の中味を指定位置から特定の数だけ削除やList同士の結合等の配列操作を柔軟にするための構造体込みの配列です。 「Listの挙動」を知らないので具体的なイメージがわきませんが、「配列の中味を指定位置から特定の数だけ削除」は Array.prototype.splice で実現可能ですね。 「List同士の結合等の配列操作を柔軟にするための構造体込み」は抽象的な説明でよくわかりません。 構造体の要件が具体的であれば、もう少し、具体的なアドバイスができるかもしれませんが。 JavaScript で可能なのは、「Map, Set, Array, iterableなデータ」を組み合わせて構造化する事です。 構造体そのものがなければ、自分で新しいクラスを発明するしかないと思います。
think49

2017/08/30 08:50

振り返ると、同様の質問を seri さんご自身が過去にされていますね。 https://teratail.com/questions/74780 やはり、既存の枠組みで seri さんがコードを書いて頂いて、「足りない部分」をJavaScriptの用語で説明されると良いと思います。
seri

2017/08/30 08:56

私としてもJavaScriptの用語で説明したいのですが、それが出来ないのでC#で書いております。 Array.prototype.spliceとゆう機能も深くは知らないものです、参考にさせていただきます。 ありがとうございます。
think49

2017/08/30 09:14 編集

kei344さんの回答をベストアンサーに選んでクローズしていますが、 https://teratail.com/questions/74780 の回答から構造としては何も変わっていないように読めます。 Array#push を知らなくて知ることが出来たのが今回の収穫なのでしょうか。 もし、そうなのであれば、初めから配列とオブジェクト初期化子を使った「JavaScript コード」を書き、配列にオブジェクトを追加する方法を質問すると良かったと思います。 ところで、配列のメソッド一覧は下記URLが参考になります。 https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype
guest

0

ベストアンサー

JavaScript

1var arr = []; 2arr.push( { 3 name: 'text' 4 , id: 1 5 , obj: {} 6} ); 7arr.push( { 8 name: 'test' 9 , id: 8 10 , obj: {} 11} ); 12 13console.log( arr );

こういう意味でしょうか。それともクラスを作ってある程度構造を保持(たとえばidを数値に限定したり)するようにするということでしょうか。

投稿2017/08/30 07:28

kei344

総合スコア69407

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

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

kei344

2017/08/30 09:26 編集

回答へのコメントがないので結局何が知りたいかはわかりませんが、まずC#とJavaScriptのコードの組み方は同じではないはずです。C#でできること全てがJavaScriptで出来る訳でもないので、入門書等を読んで概要をつかんでみてはいかがでしょうか。Webの情報は「体系立てた情報」で無いことが多いので、本屋で何冊か本を買って読むと言う方法が良いと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問