次の配列があります:
var tst =
[
{"topicId":1,"subTopicId":1,"topicName":"a","subTopicName":"w"},
{"topicId":1,"subTopicId":2,"topicName":"b","subTopicName":"x"},
{"topicId":1,"subTopicId":3,"topicName":"c","subTopicName":"y"},
{"topicId":2,"subTopicId":4,"topicName":"c","subTopicName":"z"}
]
topicId > id および topicName > name のような配列にこれをマップする簡単な方法はありますか:
var t =
[
{"id":1,"name":"a"},
{"id":2,"name":"c"}
]
私は最新のブラウザを使用しており、役に立つなら _lodash も使用しています。tst 配列には約 100 行あるため、非常に最適化されたソリューションは必要ないことに注意してください。シンプルで保守しやすいソリューションの方が重要です。
ベストアンサー1
最も最近の
var tst = [
{"topicId":1,"subTopicId":1,"topicName":"a","subTopicName1":"w"},
{"topicId":2,"subTopicId":2,"topicName":"b","subTopicName2":"x"},
{"topicId":3,"subTopicId":3,"topicName":"c","subTopicName3":"y"},
{"topicId":1,"subTopicId":4,"topicName":"c","subTopicName4":"z"}
];
var result = _.map(_.uniqBy(tst, 'topicId'), function (item) {
return {
id: item.topicId,
name: item.topicName
};
});
console.log(result);
遺産
http://lodash.com/docs#uniq良いスタートだ
_.uniq([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');
IDで一意のトピックを取得するには、コードは次のようになります。
var t = _.uniq(tst, 'topicId');
編集
jsfiddleを作りました
アップデート
名前の不要な一意性を削除