从具有相同键的另一个对象数组创建一个对象数组
Create an array of objects from another array of Objects with same keys
我想创建一个新的数组数组,其中包含循环遍历数组的对象。
const data = [{pizza: {quantities: 5, price: 12}, burger: {quantities: 3, price: 10}, fries: {quantities: 3, price: 6}}, {pizza: {quantities: 3, price: 20}, burger:{quantities: 4, price: 18}, fries: {quantities: 6, price: 8}}]
将上面的数组转换为
[[{quantities: 5, price: 12},{quantities: 3, price: 20}],[{quantities: 3, price: 10},quantities: 4, price: 18}], [{quantities: 3, price: 6},{quantities: 6, price: 8}]]
这是将相同的关键对象组合在一起。
我是编码新手,非常感谢任何帮助。谢谢!
这可能有帮助,如果有其他可行的方法,我也会在几分钟内添加,但这是可行的:
var obj = [{pizza: {quantities: 5, price: 12}, burger: {quantities: 3, price: 10}, fries: {quantities: 3, price: 6}}, {pizza: {quantities: 3, price: 20}, burger:{quantities: 4, price: 18}, fries: {quantities: 6, price: 8}}]
var pizza=[];
var burger=[];
var fries=[];
var ans=[]
for(var i=0;i<obj.length;i++){
const oPizza = obj[i].pizza;
const oBurger = obj[i].burger;
const oFries = obj[i].fries;
pizza.push(oPizza)
burger.push(oBurger)
fries.push(oFries)
}
ans.push(pizza);
ans.push(burger);
ans.push(fries);
console.log(ans)
如果数据采用相同的格式,那么将在此添加其他更好的方法,然后根据 index
简单地分发它,我们将不需要编写我们自己的每个变量:
var obj = [{pizza: {quantities: 5, price: 12}, burger: {quantities: 3, price: 10}, fries: {quantities: 3, price: 6}}, {pizza: {quantities: 3, price: 20}, burger:{quantities: 4, price: 18}, fries: {quantities: 6, price: 8}}]
var ans=[]
obj.map((v)=>{
var o = v;
Object.keys(o).map((k,i)=>{
if(ans[i]===undefined)
ans[i]=[]
ans[i].push(o[k])
})
})
console.log(ans)
我假设您想将每种对象(比萨饼、汉堡等)放入其自己的数组中。您需要为此创建一个缓冲区对象,然后使用 forEach 遍历数据数组,在缓冲区中为每个键创建一个对象,并将每个对象推入包含在该键中的数组:
buffer = {};
data.forEach(d=>{
for(o in d) {
buffer[o] = buffer[o] || [];
buffer[o].push(d[o]);
}
});
几件事。在 forEach 中,括号内的 d
是数组循环时的每个元素。我只是随意选择了d。您可以随意调用此变量。我正在使用箭头函数,因此 =>
将传递的对象 (d
) 连接到函数操作(包含在 {}
中,就像任何函数一样)。
在循环内,我使用 for..in 迭代由 forEach 传递的对象,因为它不是数组,这可能是最简单的方法。 o
在这种情况下将是对象的键,但您可以使用任何名称。这一行:
buffer[o] = buffer[o] || [];
exists 检查并查看键 o
是否已存在于缓冲区对象中,如果不存在则为其分配一个空数组。 ||
是 OR 运算符。 []
只是一个空数组。如果 buffer[o]
存在,则 ||
运算符不必进一步查找,只需 return 现有值即可。如果它不存在,则 ||
return 是运算符右侧的值,在本例中为空数组 []
.
这一行:
buffer[o].push(d[o]);
只是将当前对象(d[o]
)的值推送到缓冲区对象。
此时,您已将原始数组中的所有对象按键排序到缓冲区对象中。如果您真的只想 return 值数组,那么您可以使用
Object.values(buffer)
到 return 只是那些,应该给出您指定的格式。这种技术不关心键名是什么,因此您不必事先知道,也不必为每个可能的值设置不同的数组。
希望这对您有所帮助,并且解释清楚。如果这对您有用,请告诉我。
const data = [{pizza: {quantities: 5, price: 12}, burger: {quantities: 3, price: 10}, fries: {quantities: 3, price: 6}}, {pizza: {quantities: 3, price: 20}, burger:{quantities: 4, price: 18}, fries: {quantities: 6, price: 8}}];
buffer = {};
data.forEach(d=>{
for(o in d) {
buffer[o] = buffer[o] || [];
buffer[o].push(d[o]);
}
});
console.log("THE BUFFER:");
console.log(buffer);
console.log("THE ANSWER:");
console.log(Object.values(buffer));
我想创建一个新的数组数组,其中包含循环遍历数组的对象。
const data = [{pizza: {quantities: 5, price: 12}, burger: {quantities: 3, price: 10}, fries: {quantities: 3, price: 6}}, {pizza: {quantities: 3, price: 20}, burger:{quantities: 4, price: 18}, fries: {quantities: 6, price: 8}}]
将上面的数组转换为
[[{quantities: 5, price: 12},{quantities: 3, price: 20}],[{quantities: 3, price: 10},quantities: 4, price: 18}], [{quantities: 3, price: 6},{quantities: 6, price: 8}]]
这是将相同的关键对象组合在一起。 我是编码新手,非常感谢任何帮助。谢谢!
这可能有帮助,如果有其他可行的方法,我也会在几分钟内添加,但这是可行的:
var obj = [{pizza: {quantities: 5, price: 12}, burger: {quantities: 3, price: 10}, fries: {quantities: 3, price: 6}}, {pizza: {quantities: 3, price: 20}, burger:{quantities: 4, price: 18}, fries: {quantities: 6, price: 8}}]
var pizza=[];
var burger=[];
var fries=[];
var ans=[]
for(var i=0;i<obj.length;i++){
const oPizza = obj[i].pizza;
const oBurger = obj[i].burger;
const oFries = obj[i].fries;
pizza.push(oPizza)
burger.push(oBurger)
fries.push(oFries)
}
ans.push(pizza);
ans.push(burger);
ans.push(fries);
console.log(ans)
如果数据采用相同的格式,那么将在此添加其他更好的方法,然后根据 index
简单地分发它,我们将不需要编写我们自己的每个变量:
var obj = [{pizza: {quantities: 5, price: 12}, burger: {quantities: 3, price: 10}, fries: {quantities: 3, price: 6}}, {pizza: {quantities: 3, price: 20}, burger:{quantities: 4, price: 18}, fries: {quantities: 6, price: 8}}]
var ans=[]
obj.map((v)=>{
var o = v;
Object.keys(o).map((k,i)=>{
if(ans[i]===undefined)
ans[i]=[]
ans[i].push(o[k])
})
})
console.log(ans)
我假设您想将每种对象(比萨饼、汉堡等)放入其自己的数组中。您需要为此创建一个缓冲区对象,然后使用 forEach 遍历数据数组,在缓冲区中为每个键创建一个对象,并将每个对象推入包含在该键中的数组:
buffer = {};
data.forEach(d=>{
for(o in d) {
buffer[o] = buffer[o] || [];
buffer[o].push(d[o]);
}
});
几件事。在 forEach 中,括号内的 d
是数组循环时的每个元素。我只是随意选择了d。您可以随意调用此变量。我正在使用箭头函数,因此 =>
将传递的对象 (d
) 连接到函数操作(包含在 {}
中,就像任何函数一样)。
在循环内,我使用 for..in 迭代由 forEach 传递的对象,因为它不是数组,这可能是最简单的方法。 o
在这种情况下将是对象的键,但您可以使用任何名称。这一行:
buffer[o] = buffer[o] || [];
exists 检查并查看键 o
是否已存在于缓冲区对象中,如果不存在则为其分配一个空数组。 ||
是 OR 运算符。 []
只是一个空数组。如果 buffer[o]
存在,则 ||
运算符不必进一步查找,只需 return 现有值即可。如果它不存在,则 ||
return 是运算符右侧的值,在本例中为空数组 []
.
这一行:
buffer[o].push(d[o]);
只是将当前对象(d[o]
)的值推送到缓冲区对象。
此时,您已将原始数组中的所有对象按键排序到缓冲区对象中。如果您真的只想 return 值数组,那么您可以使用
Object.values(buffer)
到 return 只是那些,应该给出您指定的格式。这种技术不关心键名是什么,因此您不必事先知道,也不必为每个可能的值设置不同的数组。
希望这对您有所帮助,并且解释清楚。如果这对您有用,请告诉我。
const data = [{pizza: {quantities: 5, price: 12}, burger: {quantities: 3, price: 10}, fries: {quantities: 3, price: 6}}, {pizza: {quantities: 3, price: 20}, burger:{quantities: 4, price: 18}, fries: {quantities: 6, price: 8}}];
buffer = {};
data.forEach(d=>{
for(o in d) {
buffer[o] = buffer[o] || [];
buffer[o].push(d[o]);
}
});
console.log("THE BUFFER:");
console.log(buffer);
console.log("THE ANSWER:");
console.log(Object.values(buffer));