2016-07-27 9 views
1

私はAngular2でアプリケーションを作成していますが、私はパーティーの配列を持っています。Typescriptで配列を区切るには

const PARTIES: Party[] = [ 
    { id: 1, title: "Main Event", description: "The biggest, most extravagant event in the last 10,000,000 years." }, 
    { id: 2, title: "Secondary Event", description: "The not as biggest, less extravagant event in the last 10,000,000 years." }, 
    { id: 3, title: "Another Event", description: "N/A" }, 
    { id: 4, title: "Another Event", description: "N/A" }, 
    { id: 5, title: "Another Event", description: "N/A" }, 
    { id: 6, title: "Another Event", description: "N/A" }, 
    { id: 7, title: "Another Event", description: "N/A" }, 
    { id: 8, title: "Another Event", description: "N/A" }, 
    { id: 9, title: "Another Event", description: "N/A" }, 
    { id: 10, title: "Another Event", description: "N/A" } 
]; 

元の配列を維持しながら、私は昔ながらのJavaScript 3.

のセグメントにこの配列を分割したいと思い、私は以下のものを使用します。

var chunk_size = 3; 
var arr = PARTIES; 
var groups = arr.map(function(e,i){ 
    return i%chunk_size===0 ? arr.slice(i,i+chunk_size) : null; 
}) 
.filter(function(e){ return e; }); 
PARTIES = groups 

しかし、私はTypeScriptを使用しています。 TypeScriptを使用して達成しようとしていることを実行する方法はありますか?

+1

JavaScriptを使用してできることをTypeScriptで処理できないと思われる理由は何ですか? – Marty

+0

この機能を簡単に実装する方法の例を教えてください。 @Marty –

+0

申し訳ありませんが、何かが実際にJavaScriptで動作していた場合、TypeScriptでも問題なく動作します: – Marty

答えて

4

JavaScriptコード:

var chunk_size = 3; 
var arr = PARTIES; 
var groups = arr.map(function(e,i){ 
    return i%chunk_size===0 ? arr.slice(i,i+chunk_size) : null; 
}) 
.filter(function(e){ return e; }); 
PARTIES = groups 

が正しくありません。

const PARTIES = [ 
    { id: 1, title: "Main Event", description: "The biggest, most extravagant event in the last 10,000,000 years." }, 
    { id: 2, title: "Secondary Event", description: "The not as biggest, less extravagant event in the last 10,000,000 years." }, 
    { id: 3, title: "Another Event", description: "N/A" }, 
    { id: 4, title: "Another Event", description: "N/A" }, 
    { id: 5, title: "Another Event", description: "N/A" }, 
    { id: 6, title: "Another Event", description: "N/A" }, 
    { id: 7, title: "Another Event", description: "N/A" }, 
    { id: 8, title: "Another Event", description: "N/A" }, 
    { id: 9, title: "Another Event", description: "N/A" }, 
    { id: 10, title: "Another Event", description: "N/A" } 
]; 

var chunk_size = 3; 
const groups = PARTIES.map(function(e,i){ 
    return i%chunk_size===0 ? PARTIES.slice(i,i+chunk_size) : null; 
}) 
.filter(x=>!!x) 

console.log(groups); 

いくつかの注意修正について:それはそれは有効な活字体だろうとJavaScriptが活字体https://basarat.gitbooks.io/typescript/content/docs/why-typescript.htmlあるので、それだけでうまくいくだった場合:)

修正

次は、作業サンプルです:

  • constを再割り当てすることはできません。だから、当事者の種類([])がgroups[][])の型と同じではありませんので、あなたがとにかく
  • 良いfilterで真booleanを使用することを割り当てる代わりにしたくない当事者
  • に再割り当てすることはできません真実/虚偽のチェック。その他:https://basarat.gitbooks.io/typescript/content/docs/tips/truthy.html
+0

私はクラス内でそれをやっています、それはそれに影響しますか? –

+0

@JeromeCarter修正コードを投稿しました – basarat

+0

ありがとうございます。私はクラス内からやろうとしていました。バサラット –

関連する問題