如何将array2中的图片元素添加到array1的每个对象中?
如何将图片数组添加到候选人数组的每个对象中?
你遇到的问题是想把array2里的图片对应添加到array1的每个候选人对象里,但之前的写法有几个语法和逻辑错误,我来帮你修正并给出正确实现:
先梳理你之前的代码问题:
- array2的处理语法错误:你写的
'image' array2.push({'image':image1})是无效代码,正确添加元素到array2的写法应该是array2.push({ image: image1 })(如果要把每张图片包装成带image属性的对象)。 - 对象不能用push方法:
array1[i]是一个候选人对象,不是数组,push()是数组专属方法,对象添加属性需要直接赋值或者用Object.assign来合并。
正确的实现方式
假设array1和array2长度一致(每个候选人对应一张图片),这里提供几种常用的方法:
方法1:传统for循环(兼容性拉满)
这种写法适合所有JavaScript运行环境:
var array1 = [{ "candidateId": 57, "firstName": "Sumit", "lastName": "Kumar Gupta", "displayName": "Sumit1", "locked": false, "photoId": -1, "resumeId": -1, "experience": " 6 Months", "email": "sumit1@test.com", "mobile": "+91.8100688592", "preferredLocation": [ "Bangalore" ], "currentEmployer": [ ], "skills": [{ "skillName": "JAVA", "level": "advanced", "candidateRating": "5", "rating": 0 }], "viewed": true, "nextStates": [{ "state": "Approach" }]}]; var array2 = [image1]; // 假设这里的image1是图片链接或图片对象 // 遍历array1,给每个对象添加image属性 for(var i = 0; i < array1.length; i++){ // 直接给对象赋值新属性 array1[i].image = array2[i]; }
方法2:forEach遍历(更简洁易读)
如果你的运行环境支持ES6+,用forEach会让代码更清爽:
array1.forEach((candidate, index) => { // 给当前候选人对象添加image属性,对应array2的同位置元素 candidate.image = array2[index]; });
方法3:如果需要把图片包装成指定格式的对象
如果你确实需要把图片放在{image: xxx}这样的结构里再合并,可以先格式化array2:
// 先把array2的每个元素转换成带image属性的对象 const formattedImageArray = array2.map(img => ({ image: img })); // 再合并到array1的每个对象中 array1.forEach((candidate, index) => { // Object.assign会把formattedImageArray[index]的属性合并到candidate里 Object.assign(candidate, formattedImageArray[index]); });
验证结果
执行完上述代码后,array1里的每个候选人对象都会多出一个image属性,值为array2对应位置的图片内容。
内容的提问来源于stack exchange,提问作者Nicoleta Wilskon
相关产品推荐
相关产品推荐

