如何通过循环从data.json生成指定格式的二维数组?
嘿,这问题不难!你要把data.json里的商品数据转换成指定格式的二维数组,我给你两种常用的实现方式,挑你顺手的来~
解决方案
核心逻辑就是遍历prodotti数组里的每个对象,把每个对象的对应字段按顺序提取出来组成子数组,最后汇总成大数组。注意原数据里的quantita是字符串类型,而你要的结果里是数字,所以需要做个类型转换。
方法一:用Array.map()(简洁首选)
map方法天生就是用来把数组里的每个元素转换成新格式的,一行搞定转换逻辑:
// 假设你已经把data.json的内容解析成了JavaScript对象,存在data变量中 const arr = data.prodotti.map(item => [ item.articolo, // 第一个元素:商品编码 item.descrizione,// 第二个元素:描述 item.prezzo, // 第三个元素:单价(原数据已是数字,直接用) parseInt(item.quantita, 10), // 第四个元素:数量(转成数字) item.totale // 第五个元素:总价(原数据已是数字) ]); console.log(arr); // 输出结果完全符合你的需求: // [["CR7012","",100,1,100],["CR7012","bla bla bla",100,5,500],["CR7012","bla bla bla",100,1,100]]
方法二:传统for循环
如果你习惯用传统的循环写法,也可以这样实现:
// 假设data是已解析的JSON对象 const arr = []; for (let i = 0; i < data.prodotti.length; i++) { const currentItem = data.prodotti[i]; // 组装子数组 const subArray = [ currentItem.articolo, currentItem.descrizione, currentItem.prezzo, parseInt(currentItem.quantita, 10), currentItem.totale ]; arr.push(subArray); } console.log(arr); // 同样得到目标二维数组
读取data.json的完整示例
如果你还需要读取本地的data.json文件,这里分两种场景给你完整代码:
浏览器环境(前端)
用fetch API异步读取文件:
fetch('data.json') .then(response => { if (!response.ok) throw new Error('文件读取失败'); return response.json(); }) .then(data => { // 这里执行转换逻辑 const arr = data.prodotti.map(item => [ item.articolo, item.descrizione, item.prezzo, parseInt(item.quantita, 10), item.totale ]); // 拿到arr后可以做后续操作,比如渲染到页面 console.log(arr); }) .catch(error => console.error('出错了:', error));
Node.js环境(后端/命令行)
用内置的fs模块读取文件:
const fs = require('fs'); const path = require('path'); // 读取文件 fs.readFile(path.join(__dirname, 'data.json'), 'utf8', (err, rawData) => { if (err) { console.error('读取文件出错:', err); return; } // 解析JSON字符串为对象 const data = JSON.parse(rawData); // 执行转换 const arr = data.prodotti.map(item => [ item.articolo, item.descrizione, item.prezzo, parseInt(item.quantita, 10), item.totale ]); console.log(arr); });
内容的提问来源于stack exchange,提问作者Raffaele Garofalo
相关产品推荐
相关产品推荐

