首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如果对象中的值与另一个对象属性匹配,如何获取这些值

如果对象中的值与另一个对象属性匹配,如何获取这些值
EN

Stack Overflow用户
提问于 2019-03-04 07:27:48
回答 1查看 37关注 0票数 -1

下面是我想要遍历的以下对象,如果特定的对象properties.title与任何其他对象相同,则获取作者姓名并将其添加到新对象中(我认为将其添加到新对象中会更容易)。

business1

代码语言:javascript
复制
{
    "type": "FeatureCollection",
    "features": [
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [
                    -89.535,
                    34.3654
                ]
            },
            "place_name": "University, Mississippi, United States",
            "properties": {
                "title": "Using Adversarial Autoencoders for Multi-Modal Automatic Playlist Continuation",
                "authorTitle": "Florian Mai"
            }
        },
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [
                    10.14,
                    54.33
                ]
            },
            "place_name": "24105, Kiel, Schleswig-Holstein, Germany",
            "properties": {
                "title": "Using Adversarial Autoencoders for Multi-Modal Automatic Playlist Continuation",
                "authorTitle": "Iacopo Vagliano"
            }
        },
        {
            "type": "Feature",
            "geometry": {
                "type": "Point",
                "coordinates": [
                    10.14,
                    54.33
                ]
            },
            "place_name": "pretend place",
            "properties": {
                "title": "new title",
                "authorTitle": "joe blogs"
            }
        }

    ],
    "properties": "",
    "authors": ""
}

我想要的对象(improvedObj)

代码语言:javascript
复制
var improvedObj = {

    obj1 = {
      title:'Using Adversarial Autoencoders for Multi-Modal Automatic Playlist Continuation"',
      authorList: 'Florian Mai,Iacopo Vagliano'
    },
    obj2 = {
        title:'new title',
        authorList: 'joe blogs
  }

}

我尝试过的

代码语言:javascript
复制
extractorArray = []

for(i=0; i<business1.features.length;i++){
extractorArray.push(business1.features[i].properties)
}
console.log('extractor', extractorArray)

var extractedValues = extractorArray.map((title) => (title));
var extractedAuthor = extractorArray.map((authorTitle) => (authorTitle))

    var improvedObj = {

      objList : {
        title:extractedValues,
        authorList: extractedAuthor
      }
    }

上面介绍了每个特性,获取它的属性并将其推送到extractorArray (这样我就可以对它使用.map函数)。现在,我的想法并不起作用,因为我只是从对象中的数组中复制(如果标题相同,就取它的作者)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-04 07:41:03

我猜你改进的对象实际上是数组,如果我错了,请纠正我。那么下面的内容应该对你有效

代码语言:javascript
复制
const authorsByBook = k.features.map(feature => feature.properties).reduce((byTitle, feature) => {
    if(!byTitle[feature.title]) byTitle[feature.title] = [];
    byTitle[feature.title].push(feature.authorTitle);
return byTitle
}, {})

const improvedObject = Object.keys(authorsByBook).map(title => ({ title, authorList: authorsByBook[title].join(',')}))

第一部分循环遍历列表并创建结构为{title: authors[]}的对象。之后,基于标题将其分解为具有对象的数组{title,}

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

https://stackoverflow.com/questions/54974842

复制
相关文章

相似问题

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