数据处理业务场景分析

由对象组成的数组中,对象之键表示某个物料的编号,对象之值表示对应物料的单价,现在的业务需求是判断相同的物料的单价必须统一,如果不统一则给出提示并退出业务处理流程;
模拟数据结构如下:

let  _arrItemPrice = [{itemNo:'4323424', price:22}, {itemNo:'4323424', price:20}, {itemNo:'4323425', price:22}, {itemNo:'4323424', price:20}, {itemNo:'4333424', price:10}, {itemNo:'4333424', price:10}];
export const hasDifferentValueByProp = (arr, ...props) => {
    let _isFlag = false; //用来标识是否有“不同”的值,初始化没有不同的值,即相同的prop1对应的prop2的值是相同的。
    if (Array.isArray(arr) && arr.length > 1 && props.length === 2) {
        const [_prop1, _prop2] = props;
        const _arr = arr.map(i => ({ [i[_prop1]]: i[_prop2] }));
        const _objProp = {};
        _arr.forEach(i => {
            const [_prop3] = Object.keys(i);
            if (!_objProp[_prop3]) _objProp[_prop3] = [];
            _objProp[_prop3].push(i[_prop3]);
        })
        if( Object.values(_objProp).some(i => (new Set(i)).size > 1) === true ) return true;
    }
   	return _isFlag ;
    }

## 知识点总结
```javascript
const [_prop1, _prop2] = props; //数组解构
const _arr = arr.map(i => ({ [i[_prop1]]: i[_prop2] })); //数组映射
const [_prop3] = Object.keys(i); // 取对象之键并解构赋值给_prop3
Object.values(_objProp).some(i => (new Set(i)).size > 1); // Object.values取对象之值形成集合;some在集合中寻找满足条件的子项,一旦找到即刻返回真。new Set(i)).size 可快速去除子项数组i的重复项;.size可得到没有重复项的元素个数;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值