简体   繁体   English

如果 object 集有一个 object 属性创建一个数组

[英]If object set has an object property create an array

I have a response value which is dynamic which i need to store in redux state,我有一个动态的响应值,我需要将其存储在 redux state 中,

Response consist of array of object and and name ex:响应由 object 和名称 ex 组成的数组:

{data:[
 {name:"abc",age:"10",id:"10"}
 {name:"abc",age:"15",id:"20"}
 {name:"def",age:"15",id:"20"}
 ]
 name: "abc"
}

So if the name is same I need to create array with the name.因此,如果名称相同,我需要使用该名称创建数组。

Expected:预期的:

abc:[
   {name:"abc",age:"10",id:"10"}
   {name:"abc",age:"15",id:"20"}
]

something I tried我试过的东西

data.map(function(o) {
       if(data.name ==o.name)
        return name[o];
 });

If you're wanting a new object with a key of the name property you could try something like this如果你想要一个新的 object 带有name propertykey ,你可以尝试这样的事情

 const response = { data: [{ name: "abc", age: "10", id: "10" }, { name: "abc", age: "15", id: "20" }, { name: "def", age: "15", id: "20" }, ], name: "abc" } const createSet = (someData) => { let key = someData.name let data = someData.data.filter(e => e.name === key) return { [key]: data } } console.log(createSet(response))

You can extract duplicated using reduce and filter :您可以使用reducefilter提取重复项:

 var data = { data:[ {name:"abc",age:"10",id:"10"}, {name:"abc",age:"15",id:"20"}, {name:"def",age:"15",id:"20"} ], name: "abc" } const lookup = data.data.reduce((a, e) => { a[e.name] = ++a[e.name] || 0; return a; }, {}); console.log(data.data.filter(e => lookup[e.name]));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM