我有一个对象,该对象由newSales
和oldSales
组成,我遍历它们以获取键值对。我已经能够控制台记录它们,但现在我陷入了困境。如何将这些键值对推入数组?这是一个示例codepen
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
,即内部的newSales
和oldSales
和data
应该是值为1和0的数组。帮助。
预期输出:
[ { name: ['newSales', 'oldSales'], data:[ 1,0 ] } ]
答案 0 :(得分:3)
如果我理解正确,那么您想要这个。
根据需要进行编辑以具有外部数组,尽管我不明白其用途。
let dataSet = [{
name: Object.keys(obj),
data: Object.values(obj)
}];
答案 1 :(得分:1)
您可能要在此行
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)
答案 2 :(得分:0)
您可以通过调用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());
答案 3 :(得分:0)
您可以使用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);