首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转换数组数据的问题

转换数组数据的问题
EN

Stack Overflow用户
提问于 2019-11-22 15:59:40
回答 4查看 77关注 0票数 0

我正在尝试转换以下JSON数组数据结构-

从…

代码语言:javascript
复制
[
  {
    "date": "2019-01-01",
    "marks": [
      {
        "quantity": {
          "shoes": 1,
          "belt": 2,
          "socks": 3
        }
      }
    ]
  },
  {
    "date": "2019-01-02",
    "marks": [
      {
        "quantity": {
          "shoes": 4,
          "belt": 5,
          "socks": 6
        }
      }
    ]
  }
]

代码语言:javascript
复制
rows: [
  {
    values: [ '2019-01-01', 1, 2, 3]
  },
  {
    values: [ '2019-01-02', 4, 5, 6]
  }
]

到目前为止我能尝试的密码是-

代码语言:javascript
复制
function myFunction() {
  var response = [
    {
      "date": "2019-01-01",
      "marks": [
        {
          "quantity": {
            "shoes": 1,
            "belt": 2,
            "socks": 3
          }
        }
      ]
    },
    {
      "date": "2019-01-02",
      "marks": [
        {
          "quantity": {
            "shoes": 4,
            "belt": 5,
            "socks": 6
          }
        }
      ]
    }
  ];
  var transform = response.map(function(dailyMarks) {
    var row = [];
    Object.keys(response).asArray().forEach(function (field) {
      switch (field) {
        case 'shoes':
          return row.push(dailyMarks.shoes);
        case 'belt':
          return row.push(dailyMarks.belt);
        case 'socks':
          return row.push(dailyMarks.socks);
        case 'date':
          return row.push(dailyMarks.date);
        default:
          return row.push('');
      }
    });
    return { values: row };
  });
  Logger.log(transform);
}

但是,我遇到了这个错误-

TypeError:无法在对象1,2中找到函数asArray (第XX行,文件“代码”)

我很确定我做错了什么,但还不知道在哪里。

目标是简单地转换上述数据结构-方法并不重要。

任何帮助都将不胜感激!谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-11-22 16:23:09

在ES5中,

代码语言:javascript
复制
var arr1 = [
  {
    date: '2019-01-01',
    marks: [
      {
        quantity: {
          shoes: 1,
          belt: 2,
          socks: 3,
        },
      },
    ],
  },
  {
    date: '2019-01-02',
    marks: [
      {
        quantity: {
          shoes: 4,
          belt: 5,
          socks: 6,
        },
      },
    ],
  },
];
var out = [];
arr1.forEach(function(obj) {
  obj.marks.forEach(function(mark) {
    out.push({
      values: [obj.date].concat(
        Object.keys(mark.quantity).map(function(key) {
          return mark.quantity[key];
        })
      ),
    });
  });
});
console.log({ rows: out });

票数 2
EN

Stack Overflow用户

发布于 2019-11-22 16:06:55

您可以为订单获取一个键数组,并对标记数组进行平面映射。

代码语言:javascript
复制
var data = [{ date: "2019-01-01", marks: [{ quantity: { shoes: 1, belt: 2, socks: 3 } }] }, { date: "2019-01-02", marks: [{ quantity: { shoes: 4, belt: 5, socks: 6 } }] }],
    keys = ['shoes', 'belt', 'socks'],
    rows = data.map(({ date, marks }) =>
        ({ values: [date, ...marks.flatMap(({ quantity }) => keys.map(k => quantity[k]))] })),
    result = { rows };

console.log(result);
代码语言:javascript
复制
.as-console-wrapper { max-height: 100% !important; top: 0; }

票数 0
EN

Stack Overflow用户

发布于 2019-11-22 16:11:11

代码语言:javascript
复制
var list=[{"date":"2019-01-01","marks":[{"quantity":{"shoes":1,"belt":2,"socks":3}}]},{"date":"2019-01-02","marks":[{"quantity":{"shoes":4,"belt":5,"socks":6}}]}];

let result = list.map(( {date, marks} ) => { return {value: [date, ...Object.values(marks[0].quantity)]};});
let wrap = {rows: result};
console.log(wrap);

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58997782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档