如何使用代理合并数组中的相同项目?

How to merge the same items in the array using proxy?

我有 2 个这样的对象:

var customerA = {firstName: "Dravid, Tendulkar"},
    customerB = {firstName: "Virendra, Virat, Tendulkar"};

我想从这些字符串中找到相同的名称并使用 Proxy 合并它们,但我不能再进一步了:

var customerA = {firstName: "Dravid, Tendulkar"},
    customerB = {firstName: "Virendra, Virat, Tendulkar"};

var proxyMerge = new Proxy([customerA, customerB], {
  get: (target, keyName) => {
    let arr = target.map(item => item[keyName]);
    let output = arr.filter(item => arr[item] == arr.includes(item)); // returns an empty array.
    return output;
  }
})

var customers = proxyMerge.firstName;
console.log(customers); // the output should be: ["Dravid, Tendulkar, Virendra, Virat"] 

如何得到一个完整的没有同名的数组?

合并 map 函数的结果。结果您将有两个字符串,因此将它们连接到一个字符串然后将它们拆分回一个数组应该可以做到这一点。

然后使用 Set 对象过滤掉任何重复项。 Set 只能包含唯一值,因此不会将任何重复项添加到集合中。然后使用扩展运算符 ...Set 变回数组,并将 return 作为输出。

现在您将拥有一个没有任何重复值的数组。

var customerA = {firstName: "Dravid, Tendulkar"},
    customerB = {firstName: "Virendra, Virat, Tendulkar"};

var proxyMerge = new Proxy([customerA, customerB], {
  get: (target, keyName) => {
    let names = target.map(item => item[keyName]);
    let combined = names.join(', ').split(', ');
    let output = [...new Set(combined)];
    return output;
  }
})

var customers = proxyMerge.firstName;
console.log(customers); // the output should be: ["Dravid, Tendulkar, Virendra, Virat"]