javascript - 数组转换给出字符串而不是数组

标签 javascript arrays

我想将两个数组转换成另一种数组格式。

这是我的代码:

var array1 = [ "Kolkata", "Begumpet", "Bellary"];

var array2 = [[[20,"Kolkata1"],[10,"Kolkata2c"]],
              [[0,"Begumpet1"],[10, "Begumpet2e"]],
              [[30, "Bellary1"],[0, "Bellary2a"]]]

console.log(array2);
var resultvalue = [];
for (i = 0; i < array2.length; i++) {
    var result = "";
    var m = 0;
    for (j = 0; j < array2[i].length; j++) {
        if(m==0){
            result += "label: '" + array1[i] + "',";
            m++;
        }
        result += " '" + array2[i][j][1] + "': " + array2[i][j][0] + ", ";
    }
    resultvalue.push(result);
}
console.log(resultvalue);

它产生了我想要的结果,除了结果是一个字符串,而我需要实际的数组。

预期的输出对象应该是这样的:

dataset = [
    {label:"Kolkata", "Kolkata1":20, "Kolkata2c":10},
    {label:"Begumpet", "Begumpet1":0, "Begumpet2e":10},
    {label:"Bellary", "Bellary1":30, "Bellary2a":0},
];

最佳答案

您可以迭代 array2 并为每个条目映射一个新对象。

var array1 = ["Kolkata", "Begumpet", "Bellary"],
    array2 = [[[20, "Kolkata1"], [10, "Kolkata2c"]], [[0, "Begumpet1"], [10, "Begumpet2e"]], [[30, "Bellary1"], [0, "Bellary2a"]]],
    dataset = array2.map(function (a, i) {
        var o = { label: array1[i] };
        a.forEach(function (b) {
            o[b[1]] = b[0];
        });
        return o;
    });

console.log(dataset);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 数组转换给出字符串而不是数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40841842/

相关文章:

php - onclick 事件在 echo 中不起作用

javascript - 复杂的 CSS 选择器 - 如何要求可见

javascript - jQueryUI 图标总是显示在顶部而不是内联

Javascript 获取先前的表单输入

c# - 错误 : (using List class) Index was outside the bounds of array

javascript - 如何在组件初始化时显示 Angular Material 工具提示

ios - swift 中的 contentOffsetForScrollingToRowAtIndexPath

java - 二维数组字符串分割错误

javascript - 将 javascript 数组转换为文本区域

python - 如何使用 numpy 对循环数组进行切片