在JavaScript中基于多值特征重新组织多维数组?
我无法按我希望的方式组织此数据。在我的网页上,发生了一些我知道是工作的事情在JavaScript中基于多值特征重新组织多维数组?,javascript,arrays,sorting,multidimensional-array,Javascript,Arrays,Sorting,Multidimensional Array,我无法按我希望的方式组织此数据。在我的网页上,发生了一些我知道是工作的事情 一些PHP抛出一个多维关联数组。此数组的顶层是一个区域数组。每个区域都是一组时区 还有一些PHP创建了第二个多维关联数组。此数组的顶层是一个区域数组。每个区域都是UTC偏移量的数组 两个数组都是从相同的数据以相同的顺序生成的。这意味着$offset[“region”][0]将基于与$timezones[“region”][0]相同的时区 这两个数组都被编码成JSON并传递给我的JavaScript 我有以下JavaScr
$offset[“region”][0]
将基于与$timezones[“region”][0]
相同的时区var tempCurrentTimezoneArray = timezoneArray[ $("select[name='region_selector']").val() ];
var tempCurrentOffsetArray = timezoneOffsetArray[ $("select[name='region_selector']").val() ];
var groupedTimezones = {};
var groupedOffsets = {};
for (counter = 0; counter < tempCurrentOffsetArray.length; counter++) {
significantOffset = tempCurrentOffsetArray[counter].substr(tempCurrentOffsetArray[counter].length - 2);
if (!(significantOffset in groupedTimezones)) {
groupedTimezones[significantOffset] = [];
groupedOffsets[significantOffset] = [];
}
groupedTimezones[significantOffset].push(tempCurrentTimezoneArray[counter]);
groupedOffsets[significantOffset].push(tempCurrentOffsetArray[counter]);
}
var offsetArray = [];
for (var property in groupedTimezones) {
if (!groupedTimezones.hasOwnProperty(property)) {
continue;
}
groupedTimezones[property].sort();
groupedOffsets[property].sort();
offsetArray.push(parseInt(property));
}
offsetArray.sort();
var currentTimezoneArray = [];
var currentOffsetArray = [];
for (counter = 0; counter < offsetArray.length; counter++) {
currentTimezoneArray = currentTimezoneArray.concat(groupedTimezones[offsetArray[counter]]);
currentOffsetArray = currentOffsetArray.concat(groupedOffsets[offsetArray[counter]]);
}
var tempCurrentTimezoneArray=timezoneArray[$(“选择[name='region_selector'])。val();
var tempCurrentOffsetArray=timezoneOffsetArray[$(“选择[name='region_selector'])).val();
var groupedTimezones={};
var groupedOffsets={};
对于(计数器=0;计数器
在上面的两行中,我删除了与页面上所选区域无关的所有时区数据。这意味着我剩下两个一维数组。任一数组的任何给定索引都直接与另一个数组相关。即
tempCurrentOffsetArray[0]
是在tempCurrentTimezoneArray[0]
找到的时区的UTC偏移量
此代码的其余部分用于完成以下任务
tempCurrentTimezoneArray
输入数据的JSON
tempCurrentOffsetArray的JSON输入数据我发现了代码的问题。实际上有三个问题,第一个在第6行。在再次查看数据之后,我意识到一些值的偏移量是浮点整数或有两个以上的有效数字。新的6号线是
significantOffset = tempCurrentOffsetArray[counter].replace(/[^\d.-]/g, '');
我的代码的第二个问题也与分析浮点整数有关。在第21行,我们需要使用parseFloat
而不是parseInt
。新的21号线是
offsetArray.push(parseFloat(property));
第三个问题在第23行<代码>排序()需要被告知如何对整数进行排序。这是新线23
offsetArray.sort(function(a, b){return a-b});
最后的代码如下所示
var tempCurrentTimezoneArray = timezoneArray[ $("select[name='region_selector']").val() ];
var tempCurrentOffsetArray = timezoneOffsetArray[ $("select[name='region_selector']").val() ];
var groupedTimezones = {};
var groupedOffsets = {};
for (counter = 0; counter < tempCurrentOffsetArray.length; counter++) {
significantOffset = tempCurrentOffsetArray[counter].replace(/[^\d.-]/g, '');
if (!(significantOffset in groupedTimezones)) {
groupedTimezones[significantOffset] = [];
groupedOffsets[significantOffset] = [];
}
groupedTimezones[significantOffset].push(tempCurrentTimezoneArray[counter]);
groupedOffsets[significantOffset].push(tempCurrentOffsetArray[counter]);
}
var offsetArray = [];
for (var property in groupedTimezones) {
if (!groupedTimezones.hasOwnProperty(property)) {
continue;
}
groupedTimezones[property].sort();
groupedOffsets[property].sort();
offsetArray.push(parseFloat(property));
}
offsetArray.sort(function(a, b){return a-b});
var currentTimezoneArray = [];
var currentOffsetArray = [];
for (counter = 0; counter < offsetArray.length; counter++) {
currentTimezoneArray = currentTimezoneArray.concat(groupedTimezones[offsetArray[counter]]);
currentOffsetArray = currentOffsetArray.concat(groupedOffsets[offsetArray[counter]]);
}
var tempCurrentTimezoneArray=timezoneArray[$(“选择[name='region_selector'])。val();
var tempCurrentOffsetArray=timezoneOffsetArray[$(“选择[name='region_selector'])).val();
var groupedTimezones={};
var groupedOffsets={};
对于(计数器=0;计数器
我发现我的代码有问题。实际上有三个问题,第一个在第6行。在再次查看数据之后,我意识到一些值的偏移量是浮点整数或有两个以上的有效数字。新的6号线是
significantOffset = tempCurrentOffsetArray[counter].replace(/[^\d.-]/g, '');
我的代码的第二个问题也与分析浮点整数有关。在第21行,我们需要使用parseFloat
而不是parseInt
。新的21号线是
offsetArray.push(parseFloat(property));
第三个问题在第23行<代码>排序()需要被告知如何对整数进行排序。这是新线23
offsetArray.sort(function(a, b){return a-b});
最后的代码外观
SELECT timezone FROM data WHERE offset = "GMT-5"