如何循环对象并将关键点推入数组



我有一个由newSalesoldSales组成的对象,我正在对它们进行循环以获得键值对。我已经能够控制台记录他们,但现在我被卡住了。如何在数组中推送那些键值对?这是一个示例代码笔

const obj = {
newSales: 1,
oldSales: 0,
anotherProp: 'something',
etc: 'etc',
values: 'numbers'
}
function myDataSet() {
let dataSet = []
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
console.log(`${key} : ${obj[key]}`)
dataSet.push({
name: ['newSales', 'oldSales'],
data: [1, 0]
})
}
}
return dataSet
}
myDataSet();

对象中的新名称应为name,即newSalesoldSales,内部的data应为值为1和0的数组。我感谢所有的帮助。

预期输出:

[ { name: ['newSales', 'oldSales'], data:[ 1,0 ] } ]

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

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

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

您可能需要在中添加一些内容

const obj = {
newSales: 1,
oldSales: 0,
anotherProp: 'something',
etc: 'etc',
values: 'numbers'
}
let dataSet = [], names= [], data =[];
for (let key in obj) {
if (obj.hasOwnProperty(key) && ["newSales", "oldSales"].indexOf(key) >= 0) {    
console.log(`${key} : ${obj[key]}`)
data.push(obj[key]);
names.push(key);
}
}
dataSet.push({names:names, data:data});

console.log(dataSet)

您可以通过调用Object.keys()来获得对象键的列表,类似于值:

const obj = {
newSales: 1,
oldSales: 0
}
function myDataSet() {
let dataSet = []
dataSet.push({
'name': Object.keys(obj),
'data': Object.values(obj)
});
return dataSet;
}
console.log(myDataSet());

您可以使用Object.entries()Array#reduce():

const obj = {
newSales: 1,
oldSales: 0
}
const dataSet=[]
dataSet.push(Object.entries(obj).reduce((acc,[key,value])=>{
acc.name.push(key)
acc.data.push(value)
return acc
},{name:[],data:[]}));
console.log(dataSet);

最新更新