我正在编写 javascript 来尝试只做一些简单的任务。
var series = ["A","0","0","B","0","C","0","0","D","0"];
var off = 1;
var built = 1;
var position = 1;
var masterSeries = [];
var slot = 1;
console.log(series);
function createMaster() {
for (var i = 0; i <= series.length - 1; ++i) {
masterSeries[i] = ["Mode" + off];
//console.log("Creating Internal Array #" + off);
off++
}
off = 1;
//since we already have first series we just assign it here
masterSeries[0] = series;
return masterSeries;
}
function buildAltSeriesNoNull() {
for (var i = 1; i <= series.length - 1; i++) {
slot++;
console.log("Checking Slot: " + slot);
if (series[i] != "0") {
console.log("Found Non Null, building: " + built);
//code to mutate the original array into new arrays goes here
var temp = series;
var back = temp.slice(i, series.length);
var front = temp.slice(0,i);
var newline = back.concat(front);
masterSeries[position] = newline;
position++;
console.log("Added to Master Series Mini Array:" + position);
built++;
} else {
console.log("Skipping Slot: " + slot);
}
off++;
//masterSeries[i] = ["Love" + numOffset]; //set the mode
}
console.log(masterSeries);
}
console.log(createMaster()); //Create the MasterSeries Display the Banks
console.log("Memory banks have been created, and we have a valid series of numbers to work with!");
console.log('\n');
console.log(buildAltSeriesNoNull());
- 我有一个包含可能字母的 10 个索引的硬编码数组
- 将有随机数量的字母填充 10 个插槽,第一个索引是否为 null 无关紧要
例如
A00B0C00D0
ABC00D00EF
0A0B0C0D0E
- 零应该被视为空(将在一秒钟内派上用场)
首先,我希望程序在第一个和
A. 确定它是空字母还是有效字母
B.如果为null,则跳到下一个索引
C. 如果它有一个有效的字母,它将创建一个新数组并将原始数组“重新排序”到一个看起来像这样的自定义排序数组。(使用上面的示例原始数组之一)
原始阵列
索引--> [0,1,2,3,4,5,6,7,8,9]
值-->A00B0C00D0
程序检查索引 2 是否为空,移动到下一个,检查索引 3 是否为空,移动到下一个。索引 4 有一个值,“ B
” 所以现在程序创建了一个简单调用的新数组array2nditerate
,该数组现在看起来像这样
第二个阵列
索引--> [0,1,2,3,4,5,6,7,8,9]
值-->B0C00D0A00
第三阵列
索引--> [0,1,2,3,4,5,6,7,8,9]
值-->C00D0A00B0
第四阵列
索引--> [0,1,2,3,4,5,6,7,8,9]
值-->D0A00B0C00
因此,它会根据它所在的原始数组中的位置为每个唯一字母创建一个新数组。
因此,一旦它为每个具有值的插槽创建了所有唯一的排序数组。然后我需要它来执行整个相同的过程,但这次是原始数组中只有空值的位置......所以例如它看起来像这样。
原始阵列
索引--> [0,1,2,3,4,5,6,7,8,9]
值-->A00B0C00D0
第一个空数组
索引--> [0,1,2,3,4,5,6,7,8,9]
值-->00B0C00D0A
第二个空数组
索引--> [0,1,2,3,4,5,6,7,8,9]
值-->0B0C00D0A0
第三个空数组
索引--> [0,1,2,3,4,5,6,7,8,9]
值-->0C00D0A00B
第四个空数组
索引--> [0,1,2,3,4,5,6,7,8,9]
值-->00D0A00B0C
第五个空数组
索引--> [0,1,2,3,4,5,6,7,8,9]
值-->0D0A00B0C0
第六个空数组
索引--> [0,1,2,3,4,5,6,7,8,9]
值-->0A00B0C00D
如果您注意到它创建了 4 个自定义排序的非空数组,因为在 10 个可能的索引位置的数组中只有 4 个字母。它创建了六个非空值,因为 10 个位置 -4 个非空数组是 6 个空数组
我不确定哪种方法更快,更好。使用一个 for 循环进行迭代并排序为一堆空数组并排序为一堆非空数组,或者编写两个单独的迭代函数
- 一次通过仅查找非空索引并以这种方式排序
- 通过查找空索引进行排序并以这种方式排序