首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何合并具有相同值的Js对象?

如何合并具有相同值的Js对象?
EN

Stack Overflow用户
提问于 2021-08-07 09:42:40
回答 3查看 64关注 0票数 0

我们需要检查每个输入键,并检查其他输入键是否有共同的值。如果它们有,我们需要将它们连接在一起,并显示对。如果没有任何共同之处,则显示一个空数组并提供给定的输出。

代码语言:javascript
运行
复制
input : 
{
    "harsh" : ["cricket", "vollyball"],
    "aasim" : ["cricket", "football", "ludo", "COD", "rugb", "vollyball", "Racing"],
    "jignesh" : ["cycling", "cricket"],
    "jimish" : ["cycling"],
    "prince" : ["vollyball","football"],
    "raj" : ["ludo","cricket","cycling"]
}

output : 

{
    "harsh, aasim":["cricket","vollyball"],
    "harsh, jignesh":["cricket"],
    "harsh, jimish":[],
    "harsh, prince":["vollyball"],
    "harsh, raj":["cricket"],
    "aasim, jignesh": ["cricket"],
    "aasim, jimish": [],
    "aasim, prince": ["vollyball","football"],
    "aasim, raj": ["ludo","cricket"],
    "jignesh, jimish" : ["cycling"],
    "jignesh, prince" : [],
    "jignesh, raj" :["cycling"],
    "prince, raj" : []
    
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2021-08-07 11:37:07

看看这个:

代码语言:javascript
运行
复制
const findDuplicates = arr => arr.filter((item, index) => arr.indexOf(item) !== index);
    
const rearangeObject = providedObj => {
     const newObj = {};
     const keys = Object.keys(providedObj);
    
      for (let i = 0; i < keys.length; i++) {
          for (let j = i + 1; j < keys.length; j++) {
              let str = keys[i] + ", " + keys[j];
              newObj[str] = findDuplicates([...providedObj[keys[i]], ...providedObj[keys[j]]]);
          }
      }
      return newObj;
}
    
const providedObj = {
      "harsh": ["cricket", "vollyball"],
      "aasim": ["cricket", "football", "ludo", "COD", "rugb", "vollyball", "Racing"],
      "jignesh": ["cycling", "cricket"],
      "jimish": ["cycling"],
      "prince": ["vollyball", "football"],
      "raj": ["ludo", "cricket", "cycling"]
};
console.log(rearangeObject(providedObj));
票数 0
EN

Stack Overflow用户

发布于 2021-08-07 11:22:00

尝试一下,这在PHP中很容易实现,但是如果这段代码能为您工作,那也没问题

代码语言:javascript
运行
复制
  var name = [
        "harsh",
        "aasim",
        "jignesh",
        "jimish",
        "prince",
        "raj"
    ]
    var array1 = [
        ["cricket", "vollyball"],
        ["cricket", "football", "ludo", "COD", "rugb", "vollyball", "Racing"],
        ["cycling", "cricket"],
        ["cycling"],
        ["vollyball", "football"],
        ["ludo", "cricket", "cycling"]
    ];
    //array1= console.log(array1);
    array = [];
    for (var i = 0; i < array1.length; i++) {

        for (var k = 1; k < array1.length; k++) {
            var array5 = array1[i].filter(function(obj) {
                return array1[k].indexOf(obj) == -1;
            });
            
            if(array5.length!=0){
            array[name[i]] = array5
            
            }

        }
    }

    console.log(array);
票数 0
EN

Stack Overflow用户

发布于 2021-08-07 15:41:10

代码语言:javascript
运行
复制
const input = {
    "harsh" : ["cricket", "vollyball"],
    "aasim" : ["cricket", "football", "ludo", "COD", "rugb", "vollyball", "Racing"],
    "jignesh" : ["cycling", "cricket"],
    "jimish" : ["cycling"],
    "prince" : ["vollyball","football"],
    "raj" : ["ludo","cricket","cycling"]
};

const inputKeys = Object.keys(input);
const keyCombinations = [];
while (inputKeys.length) {
  const k0 = inputKeys.shift();
  inputKeys.forEach(k1 => keyCombinations.push([k0, k1]));
}
const output = {};
keyCombinations.forEach(k => output[k.join(', ')] = input[k[0]].filter(k0 => input[k[1]].includes(k0)));
console.log(output);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68691184

复制
相关文章

相似问题

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