首页 > 解决方案 > 比较数组和对象的值,如果为真,则将它们保存到另一个对象

问题描述

我正在寻找比较两个数组并根据真实的信息和比较创建一个新对象,我在下面解释。

我的目标是获取我保存在代码数组中的代码并将其与imagesCode.code 对象进行比较,如果它们相同,我将获取代码。标题和代码.rgb1将其传递给imagesCode.title 和 imagesCode.rgb , 所以 II 可以把这个新对象完全归还使用

获取图像对象

const colors = 'http://api.evoximages.com/api/v1/vehicles/';
const urlsColors = res.data.data[0]["urls"];
        try {
            colorList = await axios.get(colors);

            let codes = [];
            let codesLength = 0;
            let imagesCode = {
                code,
                url,
                title,
                rgb
            };

            for (let i = 0; i < colorList.data.data.colors.length; i++) {
               codesLength = colorList.data.data.colors[0].code.length;
               codes.push(colorList.data.data.colors[i]);   
               imagesCode.code = urlsColors[i].substr(-4 - codesLength, codesLength);
               imagesCode.url = urlsColors[i];
        }

        for (var j = 0; j < imagesCode.length; j++) {
            if (imagesCode.code == codes[j].code) {
                imagesCode.title = codes[j].title;
                imagesCode.rgb = codes[j].rgb1;
            } else {
              console.log("something wrong");
            }
          }
        } catch (error) {
            return error;
        }

第一个他不保存对象内部的元素,我不是很熟悉,我只是尝试过,第二个他是检查和比较代码,如果它们是真的我会通过titles和rgb,但是我又失败了

代码数组示例:

[{
    vifnum: 12930,
    code: 'GPJ',
    title: 'Cajun Red Tintcoat',
    simpletitle: 'Red',
    rgb1: '86090C',
    rgb2: null,
    shotin: 1,
    id: 5099113
  },
  {
    vifnum: 12930,
    code: 'G1W',
    title: 'Iridescent Pearl Tricoat',
    simpletitle: 'White',
    rgb1: 'E8E8EE',
    rgb2: null,
    shotin: 0,
    id: 5099114
  },
  {
    vifnum: 12930,
    code: 'G8U',
    title: 'Ivy Metallic',
    simpletitle: 'Green',
    rgb1: '0C321D',
    rgb2: null,
    shotin: 0,
    id: 5099115
  },
  {
    vifnum: 12930,
    code: 'GD1',
    title: 'Kinetic Blue Metallic',
    simpletitle: 'Blue',
    rgb1: '223968',
    rgb2: null,
    shotin: 0,
    id: 5099116
  },
  {
    vifnum: 12930,
    code: 'GB8',
    title: 'Mosaic Black Metallic',
    simpletitle: 'Black',
    rgb1: '060606',
    rgb2: null,
    shotin: 0,
    id: 5099117
  }
]

imagesCode 数组示例:

['G1W', 'G8U', 'GB8', 'GD1', 'GPJ']

标签: javascriptnode.jsaxios

解决方案


const results = ImagesCodes.map((code) => ({
  code,
  title: ObjCodes.find((item) => item.code === code)?.title
}));

推荐阅读