首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在嵌套属性上使用javascript存档uniqBy

如何在嵌套属性上使用javascript存档uniqBy
EN

Stack Overflow用户
提问于 2018-03-26 17:05:33
回答 2查看 2.7K关注 0票数 1

我有一个结构类似的对象(简化版本):

代码语言:javascript
运行
复制
{
   "time": 100,
   "complete" : true,
   "results" : {
       "total": 10,
       "score": 3,
       "results": [ 
           {
           "id" : 123,
           "name": "test123"
            },
            {
           "id" : 123,
           "name": "test4554"
            }
          ]
       }     
 }

基于._uniqBy是唯一的键,如何使用results.results.id去复制结果?

为了澄清,我希望在原始对象结构中返回重复的结果集。

代码语言:javascript
运行
复制
 {
   "time": 100,
   "complete" : true,
   "results" : {
       "total": 10,
       "score": 3,
       "results": [ 
           {
           "id" : 123,
           "name": "test123"
            }
          ]
       }     
 }

谢谢

EN

Stack Overflow用户

回答已采纳

发布于 2018-03-26 19:14:26

您可以通过将对象的正确部分传递到_.uniqBy(array, [iteratee=_.identity])函数来实现您的目标。

接下来,您要做的就是“连接”uniqBy结果和对象。这有点棘手。我建议您使用ES6 Object.assign()方法和spread运算符。

看看我的解决方案。希望这能有所帮助。

代码语言:javascript
运行
复制
const myObj = {
  "time": 100,
  "complete" : true,
  "results" : {
    "total": 10,
    "score": 3,
    "results": [
      {"id" : 123, "name": "test123"},
      {"id" : 123, "name": "test4554"}
    ]
  }     
};

const uniq = _.uniqBy(myObj.results.results, 'id');
const resultWrapper = Object.assign({}, myObj.results, { results: [...uniq] });
const resultObj = Object.assign({}, myObj, { results: resultWrapper });

console.log( resultObj );
代码语言:javascript
运行
复制
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.5/lodash.min.js"></script>

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49496903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档