我有对象的数组内,称为specials
,与每个对象看起来像这样:对象推入数组嵌套在另一个阵列
{
apr_rate:"",
client_id:"",
disclaimer:",
lease_payment: "",
make:"",
model:"",
name:"",
platform:"",
price:"",
specialOrder:"",
specialStyle: "",
trim:"",
visible:"",
website:"",
year:"",
}
我有一个循环通过所述阵列中的每个对象准备和检查,看看如果lease_payment
属性为空。在这种情况下,我将该特定对象拼接到数组外,将其存储在一个名为tempObj
的新对象中,然后将其推入一个名为tempArray
的新数组。我拼接的原因是因为我需要按照lease_payment
的升序顺序排列这些对象 - 当没有租赁付款时,它需要按照price
的升序排列剩余的对象。但是,价格的订购需要在之后发生的租赁订购。见下文:
if (specials[i].lease_payment == "") {
tempObj = specials.splice(i, 1);
tempArray.push(tempObj);
} else {
// else just assume they're all lease offers and sort by lease payment
specials.sort(function(a, b) {
return a.lease_payment - b.lease_payment
});
}
我然后检查是否新的数组tempArray
具有1个对象,或多个。如果只有1个,我立即将其推回到主阵列中,它将在后面;没有另一个对象可以将它与订单进行比较。如果有多个对象,我会按照价格上涨的顺序对这些对象重新排序,然后将它们分别推入specials
数组中,因为它们需要被视为有自己的对象。见下文。
if (tempArray.length == 1) {
specials.push({tempArray});
} // else just sort the temp array by ascending price, push into main specials later
else if (tempArray.length > 1) {
tempArray.sort(function(a, b) {
return a.price - b.price
});
// grabs each individual object within temp array and pushes one at a time into main specials
for (i = 0; i < tempArray.length; i++) {
specials.push(tempArray[i]);
}
}
正在发生的事情是,在任一情况下,每当我推的对象回到specials
阵列,它被嵌套在另一个阵列中,如在此屏幕截图:
在这种情况下, 5个特殊对象中的两个被取出,排序并放回。但是,它们现在嵌套在数组中。
我错过了什么或做错了什么?任何帮助,将不胜感激。
首先,如果排序的for循环结束(这就是获得更好的性能) –
你能以紧凑的方式添加一些数据和想要的那种结果。 –
是'lease_payment'一个空字符串和一个数字作为字符串,或者只是一个字符串,有一些字母?请使用一些示例添加您的数据。 –