这是两个数组中每个数组中的一个对象的样子。
customerOrderArray = ( {
orderID: '',
orderType: '',
customerID: ''
})
customerArray = ( {
ID: '',
customerName: '',
customerCity: ''
})
这是我尝试过的代码。这导致只有一个orderObject附加到它迭代的最后一个customerObject。
for (var k = 0; k < customerOrderArray.length; k++) {
for (j = 0; j < customerArray.length; j++) {
allJobs = new Array();
if (customerArray[j].ID == customerOrderArray[k].CustomerID) {
if("allJobs" in customerArray[j]) {
customerArray[j].allJobs.push(customerOrderArray[k]);
}
else {
customerArray[j].allJobs.push(customerOrderArray[k]);
}
break;
}
}
}
如果有什么我可以扩展帮助澄清问题,或者如果对更广泛的图片的解释可能有助于我知道。我可能正在接近这个问题。我感谢任何帮助。提前谢谢。
答案 0 :(得分:0)
如果我理解正确,你希望结果是一个对象,其中customerID是一个键,值是一个包含name,city和allJobs的对象,属于这个键。
var orderLength = customerOrderArray.length,
customLength = customerArray.length,
customerObject = {};
for (var i = 0; i < customLength; i++) { // iterate over customerArray
var cAi = customerArray[i],
id = cAi.ID,
// create an value-object with name, city and an empty allJobs-array
val = {name: cAi.customerName, city: cAi.customerCity, allJobs: []};
// iterate over customerOrderArray to find all orders belonging to this id
for (var o, j = 0; j < orderLength; j++) {
o = customerOrderArray[j];
// if id is the same push this job into allJobs
if (o.customerID == id) val.allJobs.push(o);
}
// insert this customer into customerObject, key is id and value is val
customerObject[id] = val;
}
因此,如果您的客户有id&#39; user25&#39;说两个工作,看customerObject['user25']
给出:
{
name: 'Ben',
city: 'New York',
allJobs: [
{orderId: 123, orderType: 'mail', customerID: 'user25'},
{orderId: 124, orderType: 'phone', customerID: 'user25'}
]
}
原始数组不会更改。如果customerOrderArray可能在运行时被清空,则可以更快地完成。
如果我误解了某些内容,或者这不合适,请发表评论。