js算法 对象之间的比对

js算法的重要性

在前端的工作中,js是非常非常重要的,基本上的逻辑部分,都需要js作为支撑。

最近工作遇到了一个对象之间的比对。如下:

对象1:{"尺码":"L","颜色":"红色"}
对象2:{"颜色":["红色":"图片地址"],"尺码":["L"]}

比对两个对象,如果对象1中的属性值在对象2中有图片地址,则需要拿出来。

let obj1 = {“尺码”:“L”,“颜色”:“红色”};
let obj2 = {“颜色”:[{“红色”:“图片地址”}],“尺码”:“L”}

很明显,是需要对象的遍历的,建议使用for in 循环,for in 循环中的key是属性名,可以通过obj[key]的方式获取属性值。
对于obj2来说,是对象中嵌套数组,数组的循环建议使用for循环。而且我们想要的是图片地址,如果没有图片地址,则对象的属性值是字符串,而非数组,所以此时还需要进行数据类型的判断。

下面依次进行处理:

for (let key in obj2) {
  for (let i = 0; i < obj2[key].length; i++) {
      if (typeof obj2[key][i] !== "string") {
        const imgSku = obj2[key][i];
        for (let imgSkuKey in imgSku) {
          for (let item in obj1) {
            if (obj1[item] === imgSkuKey) {
              img = imgSku[imgSkuKey];
            }
          }
        }
      }
    }
  }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶浩成520

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值