["{}","{}"]这种格式的数组怎么转换成[{},{}]?

image.png
这种格式的数组怎么转换成
image.png
这种格式的数组?

阅读 4.3k
4 个回答

['{"value": ["123,234"]}'].map(str => JSON.parse(str, (k, v) => k == 'value' ? v[0].split(',') : v))只有value的话,k的判断也可以省略

这个数据生成有就点神奇,单个对象 JSON 组成数组,这个好理解;

对象的 value 值是一个坐标数组,这里就存在两种理解:

  1. 这是一组坐标,不需要处理
  2. 这是一个坐标,本意是把经纬坐标以数组的形式提供,但实际提供错了,需要处理

如果是第 1 种情况

const arr = data.map(json => JSON.parse(json));

如果是第 2 种情况,在上面的基础上还需要转换 value

const arr = data
    .map(str => JSON.parse(str))
    .map(obj => obj.value = obj.value[0].split(","));

如果还需要把坐标变为数值类型,可以对坐标结果进行 parseFloat 处理

const arr = data
    .map(str => JSON.parse(str))
    .map(obj => obj.value = obj.value[0].split(",").map(s => parseFloat(s)));

原生 map 没有做优化,可以手工合并两个 map

const arr = data
    .map(str => {
        const jo = JSON.parse(str);
        jo.value = jo.value[0].split(",").map(s => parseFloat(s));
        return jo;
    });

全部转成字符串,在转换成对象。

var list = ['{"id":1}','{"id":2}'];
JSON.parse('['+list.toString() +']');

image.png

推荐问题