当前位置: 首页 > 知识库问答 >
问题:

是否根据JS中的用户参数删除重复的元素?

经景辉
2023-03-14

我尝试删除多个类别中的重复词。为此,我有一个名为users的对象,其中包含user发送的单词。

我使用了一个新的对象,它包含在字典中找到的单词及其类别。

null

const Themes = {
    Animals: [
        'ZOE',
        'ZEBRA'
    ],
    Names: [
        'ZOE'
    ]
}

let users = []
let increment = 0
let copyArr = []

checkProposition()

function checkProposition() {
  users.push({
    id: '1',
    words: ['ZOE', 'ZEBRA'],
    score: 0
  })
  users.forEach(user => {
    copyArr.push({
      id: user.id,
      wordsFound: [],
      saveCategory: []
    })
    user.words.forEach(word => {
      algorithmCore(word)
    })
    increment++
  })
  console.log(copyArr)
}

function algorithmCore(word) {
  for (var key in Themes) {
    for (var answer in Themes[key]) {
      if (word == Themes[key][answer]) {
        copyArr[increment].wordsFound.push(word)
        copyArr[increment].saveCategory.push(key)
      }
    }
  }
  return
}

null

输出复制rn

{ id: '1', wordsFound: [ 'ZOE', 'ZOE', 'ZEBRA' ], saveCategory: [ 'Animals', 'Names', 'Animals' ]}

预期产出:

{ id: '1', wordsFound: [ 'ZOE', 'ZEBRA' ], saveCategory: [ 'Names', 'Animals' ]}

应该是:ZOE(名字)ZEBRA(动物)

如果用户发送:

users.push({
    id: '1',
    words: ['ZOE', 'ZOE'],
    score: 0
})

应该是:

{ id: '1', wordsFound: [ 'ZOE', 'ZOE' ], saveCategory: [ 'Names', 'Animals' ]}

但如果用户发送:

users.push({
    id: '1',
    words: ['ZOE', 'ZOE', 'ZEBRA'],
    score: 0
})

应该是:

{ id: '1', wordsFound: [ 'ZOE', 'ZOE' ], saveCategory: [ 'Names', 'Animals' ]}
or
{ id: '1', wordsFound: [ 'ZOE', 'ZEBRA' ], saveCategory: [ 'Names', 'Animals' ]}

共有1个答案

师曦
2023-03-14

null

js prettyprint-override">const Themes = {
    Animals: [
        'ZOE',
        'ZEBRA'
    ],
    Names: [
        'ZOE'
    ]
}

let users = []
let increment = 0
let copyArr = []
let usedAnswers=[];

checkProposition()

function checkProposition() {
users.push({
    id: '1',
    words: ['ZOE', 'ZOE','ZEBRA'],
    score: 0
})
  users.forEach(user => {
    usedAnswers[increment]=[]
    copyArr.push({
      id: user.id,
      wordsFound: [],
      saveCategory: []
    })
    user.words.forEach(word => {
      algorithmCore(word,usedAnswers[increment])
    })
    increment++
  })
  console.log(copyArr)
}

function algorithmCore(word, used) {
  let wordAdded = false;

  for (var key in Themes) {
    for (var answer in Themes[key]) {
      const wordKey=`${word}(${key})`;
      if (word == Themes[key][answer] && !wordAdded && !used.includes(wordKey)) {
        wordAdded = true;
        used.push(wordKey)
        copyArr[increment].wordsFound.push(word)
        copyArr[increment].saveCategory.push(key)
      }
    }
  }
  return
}
 类似资料:
  • 统计一个一维数组中的各个元素的个数,然后删除多出来的重复元素,并输出结果。 例如:[1,2,2,2,3,3,3,3,3]—>[1,2,3] 解决思路 将重复元素的列表中的重复元素进行统计,并将统计结果放在dictionary中,key为元素,value为该元素的个数 更新此步方法:上述步骤的功能,能够通过另外一个方法实现,即collections.Counter() 然后通过for获取key,得到

  • 问题内容: 我有下表,现在我需要删除具有重复的“ refID”但至少有一行与该引用对应的行,即我需要删除第4行和第5行。请对此提供帮助 问题答案: 这类似于Gordon Linoff的查询,但没有子查询: 这将使用内部联接仅删除其中另一行具有相同的refID但具有较低ID的行。 避免子查询的好处是能够利用索引进行搜索。该查询在refID + ID上使用多列索引时应表现良好。

  • 下面是我的数组, 这些字段来自,我在模型中声明了每个字段。这里我想删除数组中的'isMater'和'u id'。 但它不会被删除。我不确定我在哪里犯了错误。请帮忙。

  • 问题内容: 我有这张桌子,我想用SELECT来排除标记的行。一般规则是: 如果有两行或更多行,控件名与品牌名与组类型列相等 然后保留组名不是“ Keine Zuordnung”的行。 请给我一点帮助吗?谢谢! 问题答案: 这是一种方法: 它使用窗口函数来获取计数,然后使用a进行逻辑计算。

  • 本文向大家介绍Oracle删除重复的数据,Oracle数据去重复,包括了Oracle删除重复的数据,Oracle数据去重复的使用技巧和注意事项,需要的朋友参考一下 Oracle  数据库中查询重复数据: select * from employee group by emp_name having count (*)>1;  Oracle  查询可以删除的重复数据 select t1.* from

  • 本文向大家介绍Mysql删除重复的数据 Mysql数据去重复,包括了Mysql删除重复的数据 Mysql数据去重复的使用技巧和注意事项,需要的朋友参考一下 MySQL数据库中查询重复数据 select * from employee group by emp_name having count (*)>1; Mysql  查询可以删除的重复数据 select t1.* from employee