我有以下数组:
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 行,因此我不需要非常优化的解决方案。一个简单且易于维护的解决方案更为重要。
最佳答案
最近
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
更新
删除了不必要的名称唯一性
关于javascript - 如何将具有重复值的数组映射到 Javascript 中的唯一数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21414427/