循环匹配对应的筛选

在开发中,我们有时会遇到选择匹配的情况,下面的代码模拟的场景是:筛选目标数据流,过滤我们需要的对象中包含的属性值;

现定义一个模拟的数据流:

var newFeature = [
            { "attributes": { "XL": "高中", "RKZS": "52542" } },
            { "attributes": { "XL": "大专", "RKZS": "66458", 'name': 'xxx' } },
            { "attributes": { "XL": "本科", "RKZS": "91015", 'name': 'xxx' } },
            { "attributes": { "XL": "硕士", "RKZS": "39800", 'name': 'xxx' } },
            { "attributes": { "XL": "博士", "RKZS": "13562", 'name': 'xxx' } }
        ];

我们只需要对象中的学历和编号:

先限定我们需要的键(即筛选字段):

var compareArr = ['XL', 'RKZS'];

然后我们开始我们的循环匹配取值:

var resultArr = new Array();
//第一层循环,取出newFeature里面的值
//进循环之前,先存贮原本newFeature里面的值,用复制实现
var newArr = newFeature.slice();
for (var i = 0; i < newArr.length; i++) {
    //定义一个空的目标对象接收值
    var obj = { attributes: {} };
    //取出里面每一项的对应的值,并且遍历
    for (const key in newArr[i].attributes) {
    //拿到每一项想要的值之后,遍历其他的数组,假设数组为compareArr
    //因为obj这个对象是在for循环外面生成的,在每一次的循环时,我们都是利用的同一个对象,因此会进行覆盖。
        for (var j = 0; j < compareArr.length; j++) {
        //取出要比对数组的每一项与newFeature的键对比
            if (compareArr[j] == key) {
                //如果比对相等,就将newFeature里面attributes的键值对存入新数组
                resultArr[i] = obj;
                resultArr[i].attributes[key] = newArr[i].attributes[key];
            }
        }
    }
}
newFeature = resultArr;
console.log(newFeature);

好了,后台打印的就是我们需要的目标了,可以根据实际情况对上述进行修改调整!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值