Ram*_*ran 4 javascript arrays typescript ecmascript-6
如果我的数组有以下数据
let array = [{ name: "Ramesh", SalseVersion: 10, MarketingCode: 11 },
{ name: "Suresh", SalseVersion: 12, MarketingCode: 13 },
{ name: "Siva", SalseVersion: 10, MarketingCode: 14 },
{ name: "Sakthi", SalseVersion: 10, MarketingCode: 11 },...]
Run Code Online (Sandbox Code Playgroud)
然后我期待以下结果
[{ name: "Ramesh", SalseVersion: 10, MarketingCode: 11 },
{ name: "Sakthi", SalseVersion: 10, MarketingCode: 11 }]
Run Code Online (Sandbox Code Playgroud)
如果我的数组有以下数据
let array = [{ name: "Ramesh", SalseVersion: 10, MarketingCode: 11 },
{ name: "Suresh", SalseVersion: 12, MarketingCode: 14},
{ name: "Siva", SalseVersion: 12, MarketingCode: 14 },
{ name: "Sakthi", SalseVersion: 10, MarketingCode: 11 },...]
Run Code Online (Sandbox Code Playgroud)
然后我期待以下结果.
[{ name: "Ramesh", SalseVersion: 10, MarketingCode: 11 },
{ name: "Sakthi", SalseVersion: 10, MarketingCode: 11 }
{ name: "Suresh", SalseVersion: 12, MarketingCode: 14},
{ name: "Siva", SalseVersion: 12, MarketingCode: 14 }]
Run Code Online (Sandbox Code Playgroud)
我试过这种方式:在数组中获取所有非唯一值(即:重复/多次出现)
let arr = [{ name: "Ramesh", SalseVersion: 10, MarketingCode: 11 },
{ name: "Suresh", SalseVersion: 12, MarketingCode: 13 },
{ name: "Siva", SalseVersion: 10, MarketingCode: 14 },
{ name: "Sakthi", SalseVersion: 10, MarketingCode: 11 }]
var sorted_arr = arr.slice().sort();
var results = [];
for (var i = 0; i < sorted_arr.length - 1; i++) {
if (sorted_arr[i + 1].SalesVersion == sorted_arr[i].SalesVersion && sorted_arr[i + 1].MarketingCode == sorted_arr[i].MarketingCode) {
results.push(sorted_arr[i]);
}
}
console.log(results);Run Code Online (Sandbox Code Playgroud)
但无法获得重复的值.你能解决这个问题吗?
注意:请注意,如果
SalseVersion和MarketingCode值是,它应该也可以工作string/number/Boolean.
因为我已经尝试了以下一些答案,我得到以下错误.
您可以使用 reduce
第一reduce意愿组使用的连接值的值SalseVersion和MarketingCode.
第二个reduce将检查该组是否有多于1个元素.如果有concat值为1个数组.
let array = [{ name: "Ramesh", SalseVersion: 10, MarketingCode: 11 },{ name: "Suresh", SalseVersion: 12, MarketingCode: 14},{ name: "Siva", SalseVersion: 12, MarketingCode: 14 },{ name: "Sakthi", SalseVersion: 10, MarketingCode: 11 }];
let result = Object.values(array.reduce((c, v) => {
let k = v.SalseVersion + '-' + v.MarketingCode;
c[k] = c[k] || [];
c[k].push(v);
return c;
}, {})).reduce((c, v) => v.length > 1 ? c.concat(v) : c, []);
console.log( result );Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |