创建一个新的数组,通过在jQuery中使用条件迭代来组合两个现有对象
Creating a new array combining two existing objects through iteration with condition in jQuery
我有一个由两个主要属性组成的主对象,data
包含消息,included
包含消息的发送者。我想创建一个名为 messages
的新数组,它将包含两个对象的所有值,但在某种程度上,该数组中的每个对象都将包含数据值,将正确的发送者作为属性添加到每个对象。
我能够将主对象分为两个不同的对象,一个包含数据,另一个包含发送者。
if (jsonAPI.data) {
$.each(jsonAPI.data, function(index, value) {
dataObj[index] = value;
});
}
if (jsonAPI.included) {
$.each(jsonAPI.included, function(index, value) {
senders[value.id] = value;
});
}
我想我必须对 dataObj 的每个值进行迭代并检查relationships.sender.data.id
是否等于 senders.id
然后将新属性添加到 dataObj,但我不知道如何编写它。
我说的话在这个小提琴 https://jsfiddle.net/mosmic/f2dzduse/中可以更清楚
工作 jsfiddle: https://jsfiddle.net/f2dzduse/5/
var jsonAPI = {<snip>};
var dataObj = {};
if (jsonAPI.data) {
$.each(jsonAPI.data, function(index, value) {
dataObj[index] = value;
});
}
$.each(dataObj, function(index, value) {
//Prevent error if there is no sender data in included
if(jsonAPI.included.length - 1 >= index) {
//check if ids are equal
if(value.relationships.sender.data.id == jsonAPI.included[index].id) {
value.sender = jsonAPI.included[index];
}
}
});
console.log(dataObj);
此代码假定 jsonAPI.data.relationships.sender.data.id
和 jsonAPI.included.id
的顺序相同!如果情况并非总是如此,请告诉我,我将重写代码以遍历每个jsonAPI.data
,然后循环槽jsonAPI.include
以检查相等的 id。此代码会更慢,因为它总共循环 jsonAPI.data.length X jsonAPI.include
次。
以下是更新的代码:https://jsfiddle.net/f2dzduse/6/
var jsonAPI = {<snip>};
var dataObj = [];
$.each(jsonAPI.data, function(x, data) {
dataObj[x] = data;
$.each(jsonAPI.included, function(y, included) {
if(data.relationships.sender.data.id == included.id) {
dataObj[x].sender = included;
}
});
});
console.log(dataObj);
相关文章:
- 如何在javascript中迭代数字列表
- JS:检查URL中的参数,然后迭代一个参数为var的函数
- 如何迭代Array.prototype函数
- 如何使用jquery迭代具有相同属性的html元素并查找onclick事件
- 在ejs-partial中对JSON对象进行迭代
- 如何在DataTables 2.1中迭代对象数组
- 使用递归属性迭代保留属性结构
- 正在停止.在jquery中的特定时间间隔内,每次迭代的每次执行
- 如果30秒未单击,请应用CSS一次,将其删除,然后重新迭代
- 主干-从模板中迭代的集合中获取特定的模型
- 创建一个方法,通过一个窗口进行迭代并获取Titanium中的所有控件
- 什么's是在javascript中迭代项的最佳方式
- 为什么这只是迭代 HTMLCollection 的奇怪元素
- 是否“;对于的“;循环迭代遵循JavaScript中的数组顺序
- Javascript 'while' 循环,如果条件为 false,如何停止迭代
- NodeJS MySQL 函数的设计模式 - 带有迭代的条件语句,更改值
- 创建一个新的数组,通过在jQuery中使用条件迭代来组合两个现有对象
- Javascript-根据条件迭代到下一个元素
- 从json数组中迭代并输出条件数据
- 迭代Ajax响应并在某些条件下创建动态表