我有一个Javascript对象(大小不确定),其中的值是一个字符串数组。例如 :

var obj =  {
    "article1": ["john locke", "sawyer", "john Locke"] ,
    "article2": ["person3", "person4"]
}


我想进行转换,以便删除任何重复的字符串。

这意味着对于上面的示例,我将拥有

var finalObj =  {
    "article1": ["john locke", "sawyer"], //"john Locke" was removed"
    "article2": ["person3", "person4"]
}


它必须不区分大小写,即如果开头已经有“ john locke”,则应该删除john Locke。

如何实现呢?

最佳答案

因此,首先循环遍历键,而不是使用一组对数组进行重复数据删除。由于似乎大小写无关紧要,因此在将其用于集合之前,需要先降低数组的大小。



var obj = {
  "article1": ["john locke", "sawyer", "john Locke"],
  "article2": ["person3", "person4"]
}

var finalObj = Object.entries(obj).reduce((o, [key, arr]) => {
  o[key] = [...new Set(arr.map(t => t.toLowerCase()))]
  return o
}, {})

console.log(finalObj)

09-25 19:54