在数组中复制到如何删除它-JavaScript

在数组中复制到如何删除它-JavaScript,javascript,arrays,array.prototype.map,Javascript,Arrays,Array.prototype.map,基本上我有一个数组,如下所示: const companies = [ { name: "Company One", category: "Finance, Finance, Technology, Auto, Same, Same, same", start: 1981, end: 2004 } ] 在category中,我想编写一个.map或if语句来查找与该值匹配的值,如果是,则删除所有额外的值(例如,相同),只保留一个实例 到目前为止,我所做的是

基本上我有一个数组,如下所示:

const companies = [
  {
    name: "Company One",
    category: "Finance, Finance, Technology, Auto, Same, Same, same",
    start: 1981,
    end: 2004
  }
]
在category中,我想编写一个.map或if语句来查找与该值匹配的值,如果是,则删除所有额外的值(例如,相同),只保留一个实例

到目前为止,我所做的是:

const newSingles = companies.map(function(company) {
  if (company.category === company.category) {
    console.log("cats match remove and leave one");
    //This is where I am stuck?!
  };
});
这让我有点疯狂,因为我要使用
.pop()
,但不知道如何使用。接下来可以尝试什么?

尝试Array.filter(),不要在.map()中使用if语句


也许这会对您有所帮助:

您应该拆分类别,并且需要在类别数组列表中找到唯一的值。试着做一些类似的事情

var category = ["Finance", "Finance", "Technology", "Auto", "Same", "Same", "same" ];
var uniques= category.filter((item, i, ar) => ar.indexOf(item) === i);

console.log(uniques);
稍加修改,您的新实现将是这样的

const newSingles = companies.map(function(company) {
const category = company.category.filter((item, i, ar) => ar.indexOf(item) === i);
  return {
   ...company,
   category
  }
});
这是你的新结果

[
  {
    name: "Company One",
    category:[ "Finance", "Technology", "Auto", "Same", "same"],
    start: 1981,
    end: 2004
  }
]

谢谢大家的帮助,能得到帮助真是太好了

如果我将所有类别放入它们自己的数组中:

const companies = [
  {
    name: "Company One",
    category: ["Finance", "Finance", "Technology", "Auto", "Same",
               "Same"],
    start: 1981,
    end: 2004
  }
]; 
然后这样做:

companies.map(it => 
    it.category = it.category.reduce((previous, currItem) => {
        if (!previous.find(
                    x => x.toLowerCase() === currItem.toLowerCase()))
            previous.push(currItem);
        return previous;
    }, []));
这为我提供了以下输出:

[
  {
    name: 'Company One',
    category: [ 'Finance', 'Technology', 'Auto', 'Same' ],
    start: 1981,
    end: 2004
  }
]

再次感谢您的帮助:)

如果您的陈述不清楚,您想检查什么?请尝试此“嗨,鲍勃”。我看到你今天发布了一个问题,一式两份,然后在第一次路况起伏时删除了两份(以及一个Reddit帐户)。请不要这样做-接受合理的批评是在互联网上发布的重要组成部分。通常有一种观点认为问题不应该一次发布在多个地方,因为散漫的方法对社区成员说“我只是开车路过,寻求免费帮助,不打算留下来”,有些人不认为这是正常的社区互让的一部分。我们还发现,在发生“交叉发布”的情况下,它在一个位置得到解决,让其他人在其他副本上浪费时间提供帮助(我记不清我看到的次数)。因此,至少,将所有副本链接到所有副本是一种善意,因此,可以看到任何副本的读者可以查看所有其他副本,以了解已经说过的内容。这里的试金石是——问题作者是否注意不要浪费志愿者的时间?如果努力,人们会感激的。