如何遍历对象并将键推入数组?

时间:2019-11-08 16:47:12

标签: javascript

我有一个对象,该对象由newSalesoldSales组成,我遍历它们以获取键值对。我已经能够控制台记录它们,但现在我陷入了困境。如何将这些键值对推入数组?这是一个示例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,即内部的newSalesoldSalesdata应该是值为1和0的数组。帮助。

预期输出:

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

4 个答案:

答案 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);