在 JavaScript 中将数组对象转换为数组数组

Convert an object of arrays into an array of arrays in JavaScript

本文关键字:数组 对象 转换 JavaScript      更新时间:2023-09-26

我有一个带有数组的对象,每个数组都有带双引号的数字,我想将其转换为不带双引号的数组数组。

> Object { CategoryA: Array[182], CategoryB: Array[180],
> CategoryC: Array[182], CategoryD: Array[171],
> CategoryE: Array[182], CategoryF: Array[183] }

Array [ Array[182], Array[182], Array[182], Array[182], Array[182], Array[182] ]

我尝试了.replace(/"/g, "");但我得到替换不是一个函数。

JSON.stringify和JSON.parse对我和for循环没有帮助

for (var i = 0; i < data.length; i++) {
    data2[i] = data[i].replace(/"/g, "");
}
console.log(data2);

返回双引号。

更新

这就是我的 json 的样子

{"CategoryA": ["297,239", "277,227", "279,310", "297,766"],
 "CategoryB": ["15,479,207", "14,845,266", "15,454,549"],
 "CategoryC": ["285,648", "295,982", "300,306", "302,508"]
} 
您可以将

mapObject.keys结合使用,如下所示:

var result = Object.keys(yourObject).sort().map(function(key) {
    return yourObject[key].map(function(num) {
        return +num.replace(/,/g, '');
    });
});

请注意,逗号,您的数字,用于格式化,而不是浮点数。

var yourObject = {"CategoryA": ["297,239", "277,227", "279,310", "297,766"],
 "CategoryB": ["15,479,207", "14,845,266", "15,454,549"],
 "CategoryC": ["285,648", "295,982", "300,306", "302,508"]
} ;
var result = Object.keys(yourObject).sort().map(function(key) {
    return yourObject[key].map(function(num) {
      return +num.replace(/,/g, '');
    });
});
console.log(result);

谢谢@Rayon。

您可以对键进行排序(以保持字母顺序)并应用替换以将逗号更改为点,将强制转换为数字。

var object = { "CategoryA": ["297,239", "277,227", "279,310", "297,766"], "CategoryB": ["15,479,207", "14,845,266", "15,454,549"], "CategoryC": ["285,648", "295,982", "300,306", "302,508"] },
    array=  Object.keys(object).sort().map(function(k) {
        return object[k].map(function (a) {
            return +a.replace(/,/g, '');
        });
    });
console.log(array);