javascript - 找到匹配属性时从数组中删除对象
问题描述
我想以相反的顺序从我的数组中删除任何具有匹配start
和属性的对象。end
const arr = [
{ start: 'Nebraska', end: 'Kentucky' },
{ start: 'Montana', end: 'New York' },
{ start: 'Wyoming', end: 'California' },
{ start: 'California', end: 'Wyoming' },
{ start: 'New Hampshire', end: 'Ohio' },
]
即,如果这两个对象存在于数组中
{ start: 'Wyoming', end: 'California' },
{ start: 'California', end: 'Wyoming' }
我想删除
{ start: 'California', end: 'Wyoming' }
我觉得reduce
这是解决方案的方法,但不太确定如何实现它。任何建议表示赞赏
解决方案
您可以使用Map轻松实现结果
您也可以将其设为单线
arr.filter(({ start, end }) => map.get(end) === start ? false : map.set(start, end))
const arr = [
{ start: "Nebraska", end: "Kentucky" },
{ start: "Montana", end: "New York" },
{ start: "Wyoming", end: "California" },
{ start: "California", end: "Wyoming" },
{ start: "New Hampshire", end: "Ohio" },
];
const map = new Map();
const result = arr.filter(({ start, end }) => {
if (!(map.get(end) === start)) {
map.set(start, end);
return true;
}
return false;
});
console.log(result);
推荐阅读
- javascript - 将字符串值转换为数字时无法读取 null 的属性“替换”
- reactjs - 如何在 React 的 UseState 中存储 Firebase 实时数据库对象
- ios - 表视图单元格 reloadData 后保持集合视图选择状态
- reactjs - 如何通过从对象附加子元素来创建父 html 元素?
- python - 调用 += 时不添加硬币
- python - 如何根据关键列比较两个数据框
- oracle - 在 Oracle 10g 中删除用户后回收表空间
- swift - Collectionview 进入 if 条件但在 Swift 中不被称为 else 条件
- javascript - 类型 {}[] 不可分配给 {}[]
- reactjs - useRef 有时不会更新,只打印对象