2017-04-06 13 views
4

オブジェクトの配列を操作する方法を知っていますが、配列データを別の配列データにプッシュする必要はありません。オブジェクトの配列を2つだけ別の配列にプッシュする必要があります。今、私のオブジェクトフォーマットは、私は別の配列にこれをプッシュするこのAngular2、Typescript:オブジェクトの配列をオブジェクトのいくつかのフィールドだけで別の配列にプッシュする方法

data: [{ 
     "name": "Btech", 
     "courseid": "1", 
     "courserating": 5, 
     "points": "100", 
     "type": "computers" 
    }, 
    { 
     "name": "BCom", 
     "courseid": "2", 
     "courserating": 5, 
     "points": "100", 
     "type": "computers" 
    }]; 

似多少ですが、私は、オブジェクトでのみcourseidと名前をしたいです。私は、コンストラクタ内のオブジェクトを初期化し、slice()と他のいくつかの関数を使用してプッシュする必要があることを読んだが、1つの配列データを別の配列データにプッシュする必要があるため、親切に誰かがこの点で私を助けます。

+0

#typescript他のアレイであるother'、あなたがそれを行うことができ '仮に:' data.map(アイテムは=> {リターン{courseid:item.courseid、名前:item.name}})。forEachの( item => other.push(item)); ' – Diullei

答えて

11

あなたはarray map() methodを探しています:

const newArray = array.map(o => { 
    return { name: o.name, courseid: o.courseid }; 
}); 
+0

ありがとうございます。 –

8

はこれを試してみてください:

let data = [{ 
    "name": "Btech", 
    "courseid": "1", 
    "courserating": 5, 
    "points": "100", 
    "type": "computers" 
}, 
{ 
    "name": "BCom", 
    "courseid": "2", 
    "courserating": 5, 
    "points": "100", 
    "type": "computers" 
}]; 

let other = []; // your other array... 

data.map(item => { 
    return { 
     courseid: item.courseid, 
     name: item.name 
    } 
}).forEach(item => other.push(item)); 

console.log(JSON.stringify(other)) 
// => [{"courseid":"1","name":"Btech"},{"courseid":"2","name":"BCom"}] 
+0

ありがとうございました。それは働いた。タイプコピーで配列をディープコピーまたは複製できる方法を教えてください。 –

1

あなたは、単にこのようにそれを行うことができます。

//assign your array of object to variable 

var youArray:Array<any>= [{ 
    "name": "Btech", 
    "courseid": "1", 
    "courserating": 5, 
    "points": "100", 
    "type": "computers" 
}, 
{ 
    "name": "BCom", 
    "courseid": "2", 
    "courserating": 5, 
    "points": "100", 
    "type": "computers" 
}]; 

var resultArray:Array<any>=[] //empty array which we are going to push our selected items, always define types 

youArray.forEach(i=>{ 
    resultArray.push(
    { 
    "name":i.name, 
    "courseid":i.courseid 
    }); 
}); 

console.log(resultArray) 

それでもthis.pleaseが、戻ってJSONデータにこのurl

+1

ありがとうございます。それは私のために働いた。 –

+0

typescriptで配列をディープコピーまたはクローンする方法を教えてください。 –

+0

@Impromptu_Coderはこれを見ましたか? http://stackoverflow.com/questions/35504310/deep-copy-an-array-in-angular-2-typescript – IsuruAb

0

地図に従って既存のアレイまたは空のいずれかにサブスクライブに疑問を持っている場合。

let pictimeline= []; 
    var timeline = this.picService.fetchtimeline(this.limit) 


.map((data : Response) => data.json()) 
    .subscribe(pictimeline=> this.pictimeline = pictimeline); 


console.log(this.pictimeline); 
関連する問題