首页 > 解决方案 > 如何将动态数据放在对象数组下?

问题描述

这就是我获取数据的方式:

const dataSaved = [{
  count: 52,
  deliveryAmount: 0,
  discountAmount: 7,
  guests: 2,
  refundedAmount: 9,
  serviceChargeAmount: 4,
  storeId: "aslkasad",
  subtotal: 2,
  taxAmount: 4,
  total: 3
}, {
  count: 52,
  deliveryAmount: 0,
  discountAmount: 7,
  guests: 2,
  refundedAmount: 9,
  serviceChargeAmount: 4,
  storeId: "ldfgfgdf",
  subtotal: 2,
  taxAmount: 4,
  total: 3
}]

所以基本上我已经做了一个方法,在这个方法中我过滤一个对象数组并取出我需要的字段:

getDataParsed(dataSaved, storeFieldRequired) {
  const barData = [];
  for (const store of dataSaved) {
    barData.push({
      data: [store.storeFieldRequired],
      label: store.storeId
    });
  }
  return barData;
}

当我想获取数组的特定字段时,我的 [store.storeFieldRequired] 带来了 undefined。我该如何解决?

标签: javascriptarrays

解决方案


不是使用store.storeFieldRequired,而是需要使用store[storeFieldRequired]。它们有不同的含义。

store.storeFieldRequired意思是获取对象上storeFieldRequiredkey的值。store

store[storeFieldRequired]意思是获取对象上storeFieldRequired可变值键的值store

const dataSaved = [{
  count: 52,
  deliveryAmount: 0,
  discountAmount: 7,
  guests: 2,
  refundedAmount: 9,
  serviceChargeAmount: 4,
  storeId: "aslkasad",
  subtotal: 2,
  taxAmount: 4,
  total: 3
}, {
  count: 52,
  deliveryAmount: 0,
  discountAmount: 7,
  guests: 2,
  refundedAmount: 9,
  serviceChargeAmount: 4,
  storeId: "ldfgfgdf",
  subtotal: 2,
  taxAmount: 4,
  total: 3
}];


function getDataParsed(dataSaved, storeFieldRequired) {
  const barData = [];
  for (const store of dataSaved) {
    barData.push({
      data: [store[storeFieldRequired]],
      label: store.storeId
    });
  }
  return barData;
}

console.log(getDataParsed(dataSaved, 'count'));

简单地说,使用Array.prototype.map,您可以获得结果。

const dataSaved = [{
  count: 52,
  deliveryAmount: 0,
  discountAmount: 7,
  guests: 2,
  refundedAmount: 9,
  serviceChargeAmount: 4,
  storeId: "aslkasad",
  subtotal: 2,
  taxAmount: 4,
  total: 3
}, {
  count: 52,
  deliveryAmount: 0,
  discountAmount: 7,
  guests: 2,
  refundedAmount: 9,
  serviceChargeAmount: 4,
  storeId: "ldfgfgdf",
  subtotal: 2,
  taxAmount: 4,
  total: 3
}];


function getDataParsed(dataSaved, storeFieldRequired) {
  return dataSaved.map((item) => ({
    data: [item[storeFieldRequired]],
    label: item.storeId
  }));
}

console.log(getDataParsed(dataSaved, 'count'));


推荐阅读