Javascript 如何在对象上循环并将关键点推入数组?

Javascript 如何在对象上循环并将关键点推入数组?,javascript,Javascript,我有一个由newSales和oldSales组成的对象,我正在循环它们以获得键值对。我已经能够将它们记录下来,但现在我被卡住了。如何在数组中推送这些键值对?这是一个样本 const obj={ 新闻销售:1, 旧销售额:0, 另一个建议:“什么东西”, 等等:"等等",, 值:“数字” } 函数myDataSet(){ 让数据集=[] 用于(输入obj){ if(对象hasOwnProperty(键)){ log(`${key}:${obj[key]}`) dataSet.push({ 名称:

我有一个由
newSales
oldSales
组成的对象,我正在循环它们以获得键值对。我已经能够将它们记录下来,但现在我被卡住了。如何在数组中推送这些键值对?这是一个样本

const obj={
新闻销售:1,
旧销售额:0,
另一个建议:“什么东西”,
等等:"等等",,
值:“数字”
}
函数myDataSet(){
让数据集=[]
用于(输入obj){
if(对象hasOwnProperty(键)){
log(`${key}:${obj[key]}`)
dataSet.push({
名称:['newSales','oldSales'],
数据:[1,0]
})
}
}
返回数据集
}

myDataSet()如果我理解正确,您需要这个

根据需要编辑外部数组,尽管我不理解它的用途

let dataSet = [{
  name: Object.keys(obj),
  data: Object.values(obj)
}];

如果我理解正确,你想要这个

根据需要编辑外部数组,尽管我不理解它的用途

let dataSet = [{
  name: Object.keys(obj),
  data: Object.values(obj)
}];

您可以通过调用获取对象键的列表,类似于值:

const obj={
新闻销售:1,
旧销售额:0
}
函数myDataSet(){
让数据集=[]
dataSet.push({
“名称”:对象.键(obj),
“数据”:对象值(obj)
});
返回数据集;
}

log(myDataSet())您可以通过调用获取对象键的列表,类似于值:

const obj={
新闻销售:1,
旧销售额:0
}
函数myDataSet(){
让数据集=[]
dataSet.push({
“名称”:对象.键(obj),
“数据”:对象值(obj)
});
返回数据集;
}

log(myDataSet())您可能需要这行代码

const obj={
新闻销售:1,
旧销售额:0,
另一个建议:“什么东西”,
等等:"等等",,
值:“数字”
}
让数据集=[]、名称=[]、数据=[];
用于(输入obj){
如果(obj.hasOwnProperty(key)&&[“newSales”,“oldSales”].indexOf(key)>=0){
log(`${key}:${obj[key]}`)
数据推送(obj[键]);
姓名。按(键);
}
}
push({names:names,data:data});

console.log(数据集)
您可能需要这一行的内容

const obj={
新闻销售:1,
旧销售额:0,
另一个建议:“什么东西”,
等等:"等等",,
值:“数字”
}
让数据集=[]、名称=[]、数据=[];
用于(输入obj){
如果(obj.hasOwnProperty(key)&&[“newSales”,“oldSales”].indexOf(key)>=0){
log(`${key}:${obj[key]}`)
数据推送(obj[键]);
姓名。按(键);
}
}
push({names:names,data:data});

console.log(数据集)
您可以使用
Object.entries()
Array\reduce()

const obj={
新闻销售:1,
旧销售额:0
}
常量数据集=[]
dataSet.push(Object.entries(obj).reduce((acc,[key,value])=>{
附件名称推送(键)
附件数据推送(值)
返回acc
},{名称:[],数据:[]});

console.log(数据集)
您可以使用
对象.entries()
数组#reduce()

const obj={
新闻销售:1,
旧销售额:0
}
常量数据集=[]
dataSet.push(Object.entries(obj).reduce((acc,[key,value])=>{
附件名称推送(键)
附件数据推送(值)
返回acc
},{名称:[],数据:[]});


console.log(数据集)[{name:“newSales”,数据:[1,0]},{name:“oldSales”,数据:[1,0]}]
。这并不合理,因为您只有一个对象,而且该对象只包含两个属性,为什么首先需要循环它?直接使用literalsMy bad构造结果。最终结果将是:
[{name:['newSales','oldSales'],数据:[1,0]}
。谢谢你指出这一点。我应该说得更清楚。是的,实际上它包含了更多的属性,实际上让我来修复上面的代码。@ibrahimmahrir我修复了代码,希望现在代码有点清楚。谢谢。所以最终结果将是:
[{name:“newSales”,data:[1,0]},{name:“oldSales”,data:[1,0]}]
。这没有意义,因为您只有一个对象,而且该对象只包含两个属性,为什么首先需要循环它?只需直接使用literalsMy bad构造结果即可。最终结果将是:
[{name:['newSales',oldSales',data:[1,0]}
。谢谢你指出这一点。我应该说得更清楚。是的,实际上它包含了更多的属性,实际上让我来修复上面的代码。@ibrahimmahrir我修复了代码,希望它现在有点清楚。谢谢。是的,但名称和数据都应该在它们自己的数组中。这是什么意思?
[{name:['newSales','oldSales'],data:[1,0]}]
它应该匹配now.JS对象不保证属性迭代顺序。这意味着键值对可能会中断(您的代码可能导致
[{name:['newSales','oldSales'],data:[0,1]}]
。请注意,这些值是交换的)是的,但是名称和数据都应该在它们自己的数组中。这是什么意思?
[{name:['newSales',oldSales',data:[1,0]}]
它应该匹配now.JS对象不保证属性迭代顺序。这意味着键值对可能会中断(您的代码可能导致
[{name:['newSales',oldSales',data:[0,1]}]
。请注意,值是交换的)JS对象不保证属性迭代顺序。这意味着键值对可能会中断(您的代码可能导致
[{name:['newSales','oldSales'],data:[0,1]}]
。请注意,值是交换的)JS对象不保证属性迭代顺序。这意味着键值对可能会中断(您的代码可能导致
[{name:['newSales','oldSales'],data:[0,1]}]
。请注意,这些值是交换的)