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

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

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

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

Q&A

解決済

4回答

939閲覧

配列の結合で文字列か数字どちらかに合わせたい。

mi_mi

総合スコア19

JavaScript

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

0グッド

0クリップ

投稿2018/10/25 13:19

javascript

1var array = ["1","2","3","4","5","6"] 2var nums = [ 7,8,9,10,11,12] 3var arraynum = array.concat(nums+"");

.やりたい事
concatを使って2つの配列を結合して新しい配列をつくりたい。
結合したときに文字列か数字どちらか同じレベルにしたいのですが
うまくいきません。toStringが必要…?

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

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

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

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

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

m.ts10806

2018/10/25 13:22

同じ値はマージするなどの要件はありますか?これだと単に継ぎ足しているだけですよね
mi_mi

2018/10/25 14:04

2つの配列を合わせた後に、new Setを使い重複しているものを削除した配列をつくりたいのです。
m.ts10806

2018/10/25 21:27

質問本文に追記してください
guest

回答4

0

別回答で、mapメソッドで変換してから、concat する方法が提示されましたが、
2つの要素を concat してから、 map Type をあわせてもよいです。

node

1var numsA = ["1", "2", "3", "4", "5", "6"]; 2var numsB = [7, 8, 9, 10, 11, 12]; 3 4var newArrayA = numsA.concat(numsB.map(o => o.toString())); 5var newArrayB = numsA.map(o => parseInt(o)).concat(numsB); 6console.log(newArrayA); // 文字列 7console.log(newArrayB); // 数値 8 9console.log(numsA.concat(numsB).map(x => parseInt(x))); 10console.log(numsA.concat(numsB).map(x => x.toString()));

実行例
イメージ説明

投稿2018/10/25 14:18

katoy

総合スコア22324

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

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

退会済みユーザー

退会済みユーザー

2018/10/25 14:20

なるほど!こちらのほうがかなり読みやすいですね。
guest

0

配列の要素をmapメソッドで変換してから、concatすればよいです。

javascript

1<script> 2 var numsA = ["1", "2", "3", "4", "5", "6"]; 3 var numsB = [7, 8, 9, 10, 11, 12]; 4 var newArrayA = numsA.concat(numsB.map(o => o.toString())); 5 var newArrayB = numsA.map(o => parseInt(o)).concat(numsB); 6 console.log(newArrayA); // 文字列 7 console.log(newArrayB); // 数値 8</script>

投稿2018/10/25 13:26

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ネタ的に・・・

javascript

1var a = ["1","2","3","4","5","6"]; 2var b = [7,8,9,10,11,12]; 3var c = [a,b].toString().split(","); 4console.log(c); 5var d = [a,b].toString().split(",").map(Math.floor); 6console.log(d);

投稿2018/10/26 01:28

yambejp

総合スコア114784

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

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

0

ベストアンサー

こんにちは。

他の回答者様からの回答のように、toString や、parseIntを使って変換するのが、正当な方法だと思います。その上で、以下も数字の文字列と整数との変換について、「こんなことも出来る」程度に覚えておくとよいかもしれません。

  • 整数の 100 から文字列"100"への変換:

javascript

1var num1 = 100; 2var str1 = '' + num1; 3 4console.log(str1); // => "100" 5console.log(typeof str1); // string
  • 文字列"200"から、整数の 200へ変換

javascript

1var str2 = '200'; 2var num2 = +str2; 3 4console.log(num2); // => 200 5console.log(typeof num2); // => number

以下は上記のサンプルです。

これを使うと、ご質問の回答は、以下のようにも書けます。( concat してから型を揃えるようにしました。)

javascript

1var strAry = ["1", "2", "3", "4", "5", "6"]; 2var intAry = [7, 8, 9, 10, 11, 12]; 3 4var ary = strAry.concat(intAry); 5 6console.log(ary); // => ["1", "2", "3", "4", "5", "6", 7, 8, 9, 10, 11, 12] 7 8var ary1 = ary.map(e => '' + e); 9 10console.log(ary1); // => ["1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12"] 11 12var ary2 = ary.map(e => +e); 13 14console.log(ary2); // => [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

以下は、上記のサンプルです。

以上、参考になれば幸いです。

追記

数値の 100 から、文字列の "100" を作るには、もうひとつ、以下があります。

javascript

1var num = 100; 2 3var str = `${num}`; 4 5console.log(str); // => 100 6 7console.log(typeof str); // => string

投稿2018/10/25 14:24

編集2018/10/25 14:29
jun68ykt

総合スコア9058

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問