如何使用Lodash遍历对象数组提取去重后MARKET值并按字母序排序
调整方案
你当前代码的核心问题是:_.uniqBy 仅完成了对象级别的去重,返回的是去重后的完整对象集合,没有单独提取 MARKET 字段,也没有做字母排序,按以下逻辑调整即可:
- 先从原始对象数组中提取所有
MARKET字段值,得到字符串数组 - 对字符串数组做去重处理
- 对去重后的结果做字母顺序排序
完整修改后的代码
$scope.nestAssociation = (arr) => { const rawData = JSON.parse(arr); // 若MARKET所在数组在rawData的message字段下,将下方rawData替换为rawData.message即可 const sortedUniqueMarkets = $scope._.chain(rawData) .map('MARKET') // 提取所有MARKET字段值 .uniq() // 去重 .sortBy() // 按字母顺序排序 .value(); console.log("最终结果:", sortedUniqueMarkets); return sortedUniqueMarkets; }
分步写法(不使用链式调用)
$scope.nestAssociation = (arr) => { const rawData = JSON.parse(arr); // 提取所有MARKET值 const allMarketList = rawData.map(item => item.MARKET); // 去重 const uniqueMarketList = $scope._.uniq(allMarketList); // 字母排序 const sortedMarketList = uniqueMarketList.sort(); return sortedMarketList; }
内容的提问来源于stack exchange,提问作者Peter The Angular Dude
相关产品推荐
相关产品推荐

