javascript - 从数组中删除重复项,但使用 JS 忽略一个参数
问题描述
如何获取唯一数组但忽略数组中的参数之一?我想忽略name
并比较其他人,比方说......
let inventories = [
{name: 'Polo Shirt', size: 'XL', price: 19.90, color: 'black'},
{name: 'Polo Shirt (Stripe)', size: 'XL', price: 19.90, color: 'black'},
{name: 'Polo Shirt (Printed)', size: 'XL', price: 19.90, color: 'black'},
{name: 'Short Sleeve Polo Shirt', size: 'L', price: 14.90, color: 'blue'},
{name: 'Sleeve Polo Shirt', size: 'L', price: 20.90, color: 'black'},
{name: 'Long Sleeve Polo Shirt', size: 'L', price: 14.90, color: 'blue'},
{name: 'Long Sleeve Polo Shirt', size: 'L', price: 14.90, color: 'blue'},
{name: 'Long Sleeve Polo Shirt', size: 'L', price: 14.90, color: 'blue'},
];
我想要的结果:
[
{name: 'Polo Shirt (Printed)', size: 'XL', price: 19.90, color: 'black'},
{name: 'Sleeve Polo Shirt', size: 'L', price: 20.90, color: 'black'},
{name: 'Long Sleeve Polo Shirt', size: 'L', price: 14.90, color: 'blue'},
];
我知道我们可以通过以下方式获得唯一数组:
inventories = inventories
.map(JSON.stringify)
.reverse()
.filter(function(item, index, inventories) {
return inventories.indexOf(item, index + 1) === -1;
但我不知道如何告诉他们忽略name
参数......
解决方案
我认为,这是最简单的答案。您可以创建一个哈希表并根据除name
. 请参阅以下代码:
let inventories = [
{name: 'Polo Shirt', size: 'XL', price: 19.90, color: 'black'},
{name: 'Polo Shirt (Stripe)', size: 'XL', price: 19.90, color: 'black'},
{name: 'Polo Shirt (Printed)', size: 'XL', price: 19.90, color: 'black'},
{name: 'Short Sleeve Polo Shirt', size: 'L', price: 14.90, color: 'blue'},
{name: 'Sleeve Polo Shirt', size: 'L', price: 20.90, color: 'black'},
{name: 'Long Sleeve Polo Shirt', size: 'L', price: 14.90, color: 'blue'},
{name: 'Long Sleeve Polo Shirt', size: 'L', price: 14.90, color: 'blue'},
{name: 'Long Sleeve Polo Shirt', size: 'L', price: 14.90, color: 'blue'}
]
const hash = {}
inventories.forEach(function(elem) {
var selected = Object.assign({}, elem);
delete selected.name;
const key = Object.values(selected).join('-');
hash[key] = elem;
});
const result = Object.values(hash);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- ios - 为 SizeToFit 标签调整 UICollectionView 单元的大小
- assembly - 'LEA reg, mem' 等价物?
- python - 尝试绘制列表中出现频率最高的 25 个单词并获得额外的撇号和逗号
- sign - 如何仅为一台计算机签署 Safari 扩展程序?
- html - 部分在 HTML 中重叠
- c - 未声明错误“信息”(在此函数中首次使用)
- php - php posgres网站,但无法通过表单插入数据
- python-3.x - 从 3d 体积数据中提取 40 mm 立方体
- python - ImageDataGenerator 没有将实际输出保存到磁盘
- ms-access - 月历开始和结束日期女士访问