2017-06-23 15 views
0

私はJavascriptを/活字体での1次元配列から3次元配列を作成します

let a = ['hello', 'my', 'friend'] 

持つ1D の3次元配列を作成したいと私は、この

b = [[['h'], ['e'], ['l'], ['l'], ['o']], [['m'], ['y']], [['f'], ['r'], ['i'] ,['e'], ['n'], ['d']]] 

何ものような3次元配列を作成してみました作品..

どうすればこのようにすることができますか?あなたは、この使用して活字を実行しようとしている場合

let a = ['hello', 'my', 'friend']; 
 
let b = a.map(word => [...word].map(c => [c])); 
 

 
console.log(JSON.stringify(b));

答えて

2

二回だけで正常に動作します。

let a = ['hello', 'my', 'friend']; 

let result = a.map((word) => word.split('') 
.map((letter) => [letter])) 

console.log(result) 
+0

ありがとうございました!それは私のために働く、それはコーディングの本当にエレガントな方法です:) – Natali

+0

うーん、私は値をプッシュする方法を知っていますか?私は 'alert(result [0] .push( 'a'))を試みました。 'が返されますが、エラーが発生します** 'a'型の引数は 'string'型のパラメータに代入されません** – Natali

+1

@Natali' result [0] .push(['a' ]) ' –

3

これは、暗黙のうちに単位長の配列に各文字を単語ごとにString#[@@iterator]()を起動して、map() Sにspread operatorを使用していますプリプロセッサとして、配列のようなオブジェクトであるため(何らかの理由でTypescriptがそれを認識しないため)、一般的に各単語にArray#slice()を実装する必要があります。

マップを使用して

let slice = Function.call.bind(Array.prototype.slice); 
 

 
let a = ['hello', 'my', 'friend']; 
 
let b = a.map(word => slice(word).map(c => [c])); 
 

 
console.log(JSON.stringify(b));

+0

@Nataliがここ活字体プリプロセッサで –

+0

@PatrickRobertsを機能するソリューションですさはありがとう、私は今、あなたのソリューションをしようとします:)そして、私は前に知りませんでした – Natali

+0

@Natali Typescriptは、JavaScriptの厳密な型指定をアサートするために使用されるプリプロセッサ言語です。これは、そうでなければ疎結合型の言語です。 –

-1

mapコマンドは配列を返します - ので、あなたは、配列の文字を取得します一度それを呼び出すことによって。

a.map(function(item) { return [ item.split('') ]; }) 
// [[["h","e","l","l","o"]],[["m","y"]],[["f","r","i","e","n","d"]]] 

あなたは各文字の二回目をマップ呼び出す場合は、配列内の各アイテムをラップすることができます。

let b = a.map(function(item) { 
    return item.split('').map(function(inner) { 
            return [ inner ]; 
           }); 
}) 
// [[["h"],["e"],["l"],["l"],["o"]]],[[["m"],["y"]]],[[["f"],["r"],["i"],["e"],["n"],["d"]]] 
+1

これは間違って、これを実行し、OPの要求と出力を比較してみてください。 –

+0

これは私の結果です[["" h "、" e "、" l "、" l "、" o "]]、[[" m "、" y "]]、[[" f " "r"、 "i"、 "e"、 "n"、 "d"]]] "。私は違いを見つけることができません – Zeph

+0

'[[" h "]、[" e "]、[" l "]、[" l "]、[" o "]]、[[" m "]、 "y"]]、[["f"]、["r"]、["i"]、["e"]、["n"]、["d"]]] '本当に? –

0

こちらより初歩的なオプション

function convertStringIntoArray(str){ 
    var arr = []; 
    var words = str.split(" "); 
    for(var j=0; j<words.length; j++){ 
     var word = words[j]; 
     var innerArr = []; 
     for(var i=0; i<word.length; i++){ 
      innerArr.push([word.charAt(i)]); 
     } 
     arr.push(innerArr); 
    } 
    return arr; 
} 
関連する問題