在knockout中将JSON数据转换为Javascript数组

在knockout中将JSON数据转换为Javascript数组,javascript,arrays,json,knockout.js,Javascript,Arrays,Json,Knockout.js,我有以下JSON数组: AccessToFinancialServicesRule: {Clean: 3, Copy: 3} BoardParticipationRule: {Clean: 3, Copy: 3} Documents: null EconomicDevelopmentRule: {Clean: 3, Copy: 3} EmployeeStructureRule: {Clean: 3, Copy: 3} EmpowermentFinanceRule: {Clean: 3, Copy

我有以下JSON数组:

AccessToFinancialServicesRule: {Clean: 3, Copy: 3}
BoardParticipationRule: {Clean: 3, Copy: 3}
Documents: null
EconomicDevelopmentRule: {Clean: 3, Copy: 3}
EmployeeStructureRule: {Clean: 3, Copy: 3}
EmpowermentFinanceRule: {Clean: 3, Copy: 3}
EnterpriseDevelopmentRule: {Clean: 3, Copy: 3}
OwnershipRule: {Clean: 3, Copy: 3}
PreferentialProcurementRule: {Clean: 3, Copy: 3}
ResponsibleSocialMarketingRule: {Clean: 3, Copy: 3}
SkillsDevelopmentRule: {Clean: 3, Copy: 3}
SocioEconomicDevelopmentRule: {Clean: 3, Copy: 3}
SupplierDevelopmentRule: {Clean: 3, Copy: 3}
我试着把它转换成这样的数组

0: {label: "Ownership", clean: 3, copy: 3}
1: {label: "Skills<br>Development", clean: 3, copy: 3}
2: {label: "Localisation", clean: 3, copy: 3}
3: {label: "Socio-Economic<br>Development", clean: 3, copy: 3}
4: {label: "Board Participation", clean: 3, copy: 3}
5: {label: "Employee Structure", clean: 3, copy: 3}
6: {label: "Preferential Procurement", clean: 3, copy: 3}
7: {label: "Enterprise Development", clean: 3, copy: 3}
8: {label: "Supplier Development", clean: 3, copy: 3}
但这似乎不起作用,它把所有东西都变成了一个对象,就像这样:

0:
clean: undefined
copy: undefined
label: {OwnershipRule: {…}, BoardParticipationRule: {…}, SkillsDevelopmentRule: {…}, EmployeeStructureRule: {…}, PreferentialProcurementRule: {…}, …}

我做错了什么?

您需要使用
Object.keys
来访问对象中的属性这里是一个示例:

const convertToArray = array.map((item) => {
  const key = Object.keys(item)

  if (item[key]) {
    return {
      label: key[0],
      clean: item[key].Clean,
      copy: item[key].Copy
    }
  }
})

查看完整示例的链接:

您的数据不是数组,您的意思是它是一个对象数组吗?@netizen yes array of objectObject.keys返回一个数组,add[0]或.shift()它现在可以工作了,尽管我把它放在了key的赋值中,因为下一行仍然检查数组
const convertToArray = array.map((item) => {
  const key = Object.keys(item)

  if (item[key]) {
    return {
      label: key[0],
      clean: item[key].Clean,
      copy: item[key].Copy
    }
  }
})