我想創建1D 的三維陣列我有創建一個從在Javascript /打字稿一維數組的三維數組
let a = ['hello', 'my', 'friend']
我試圖創建三維陣列這樣
b = [[['h'], ['e'], ['l'], ['l'], ['o']], [['m'], ['y']], [['f'], ['r'], ['i'] ,['e'], ['n'], ['d']]]
,但沒有作品..
我該怎麼做這樣的事情?
我想創建1D 的三維陣列我有創建一個從在Javascript /打字稿一維數組的三維數組
let a = ['hello', 'my', 'friend']
我試圖創建三維陣列這樣
b = [[['h'], ['e'], ['l'], ['l'], ['o']], [['m'], ['y']], [['f'], ['r'], ['i'] ,['e'], ['n'], ['d']]]
,但沒有作品..
我該怎麼做這樣的事情?
使用地圖兩次工作得很好。
let a = ['hello', 'my', 'friend'];
let result = a.map((word) => word.split('')
.map((letter) => [letter]))
console.log(result)
這使用spread operator隱含地調用String#[@@iterator]()
對於每個單詞,然後map()
s各自字符到一個單元長度的數組:
let a = ['hello', 'my', 'friend'];
let b = a.map(word => [...word].map(c => [c]));
console.log(JSON.stringify(b));
如果試圖運行此使用打字稿作爲預處理器,您需要調用每個單詞上的一般實現的Array#slice()
,因爲它們是類似數組的對象(由於某些原因,Typescript不能識別該對象):
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));
@Natali這裏,在打字稿預處理工作 –
@PatrickRoberts謝謝你,我現在會嘗試你的解決方案:)我不知道之前的解決方案關於這個預處理器的東西,我現在會google的,所以謝謝你兩次;) – Natali
@Natali Typescript是一種預處理語言,用於對JavaScript進行嚴格的打字,這是一種鬆散類型的語言。 –
的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"]]]
這是錯誤的,請嘗試運行此操作並將輸出與OP的請求進行比較。 –
這是我的結果''[[[「h」,「e」,「l」,「l」,「o」]],[[「m」,「y」]],[[「f」 「R」, 「I」, 「E」, 「N」, 「d」]]]「'。我無法找到差異 – Zeph
'[[[「h」],[「e」],[「l」],[「l」],[「o」]],[[「m」],[ 「y」]],[[「f」],[「r」],[「i」],[「e」],[「n」],[「d」]]]'真的嗎? –
這裏是一個更基本的選項
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;
}
謝謝!它適用於我,它是非常優雅的編碼方式:) – Natali
嗯,你知道我怎麼能推值?我剛剛嘗試'alert(result [0] .push('a')); '但它給了我一個錯誤**'a'類型的參數不能分配給'string'類型的參數** – Natali
@Natali你需要將它改爲'result [0] .push(['a' ])' –