如何使用jquery组合两个数组
How to combine two arrays using jquery
我有两个数组,就像一样
var array1=['a1','a2','a3','a4','a5,','a6','a7','a8','a9','a10,','a11','a12'----];
var array2=['b1','b2','b3','b4',----];
var result= [];
我想将结果数组显示为
result= ['a1','a2','b1','a3','a4,','a5','a6','a7','a8','a9,','a10','a11','b2','a12']
第二个数组"array2"值放置在3,12,19,28,35的位置…(类似3,3+9,12+7,19+9.28+7等的序列)如果"array1"的值小于"array2",则值应连续放置在"result[]"中,例如:
array1=['a1','a2','a3'];
array2=['b1','b2','b3'];
然后
result=['a1','a2','b1','a3','b2','b3'];
如何使用jquery实现这一点?
管理此问题的快速方法。但它是可以优化的。
var array1=['a1','a2','a3','a4','a5,','a6','a7','a8','a9','a10,','a11','a12'];
var array2=['b1','b2','b3','b4'];
document.body.innerHTML += "arr1:" + array1 + "<br/>";
document.body.innerHTML += "arr2:" + array2 + "<br/>";
var result= [];
var index=0;
var lastInsertedBindex=0;
var step1 = 9;
var step2 = 7;
var lastUsedStep = step2;
var nextStepIndex = 3;
elements = true;
var indexFromA = 0;
var indexFromB = 0;
var elementsExists = true;
do{
if( index != nextStepIndex ){
if( undefined != array1[indexFromA] ){
result.push( array1[indexFromA]);
indexFromA++;
} else if( undefined != array2[indexFromB]){
result.push( array2[indexFromB]);
indexFromB++;
} else
elementsExists = false;
index++;
continue;
}else{
if( undefined != array2[indexFromB] ){
result.push(array2[indexFromB]);
indexFromB++;
lastUsedStep = lastUsedStep == step1 ? step2 : step1;
nextStepIndex = nextStepIndex + lastUsedStep;
} else if( undefined != array1[indexFromA]) {
result.push(array1[indexFromA]);
indexFromA++;
} else
elementsExists = false;
index++;
}
}while(elementsExists);
document.body.innerHTML += "res:" + result;
可以这样做的一种方法是循环使用array2
,对要得到的前x个项进行切片(取决于迭代可能是3、7或9),并从array2
附加当前索引。然后,一旦array1
中的元素用完,就继续添加array2
中的元素。
var array1 = ['a1', 'a2', 'a3', 'a4', 'a5', 'a6', 'a7', 'a8', 'a9', 'a10', 'a11', 'a12'];
var array2 = ['b1', 'b2', 'b3', 'b4'];
var result = [];
// Values to increase by
var add = [7, 9];
var originalArray1Length = array1.length;
if (array2.length) {
for (var i = 0; i < array2.length; i++) {
if (array1.length != 0) {
// If we're on the first loop we increase by 3 otherwise we get the modulus of the loop
// iteration and use it to reference the "add" array
result = result.concat(array1.splice(0, i == 0 ? 2 : add[i % 2]));
}
result[result.length] = array2[i];
}
} else
result = array1;
document.getElementById('result').innerText = result.join(',');
<div id="result"></div>
这应该可以工作。
// Create arrays
var array1 = [];
var array2 = [];
for(i=1;i<100;i++){
array1[array1.length] = "a"+i;
}
for(i=2;i<50;i++){
array2[array2.length] = "b"+i;
}
// The function
function coupleArrays(array1, array2){
var newArray = [];
var jump = 9; // first jump
var pos = 3; // Starting point
while(array1.length > 0){
var i = newArray.length;
if(i == pos-1 && array2.length != 0){
// remove first from array2 and add to newArray
newArray[i] = array2.shift();
pos += jump; // add the jump to get new position
// set jump to 9 or 7
if(jump == 9) jump = 7;
else jump = 9;
}else{
// remove first from array1 and add to newArray
newArray[i] = array1.shift();
}
}
return newArray;
}
var coupled = coupleArrays(array1, array2);
// Just to show output
for(i=0;i<coupled.length;i++){
var nr = i;
if( nr < 10 ) nr = "0"+nr;
if( nr < 100 ) nr = "0"+nr;
document.write( nr + ": " + coupled[i] + "<br />");
}
您可以使用递归函数来解决此问题:
var array1 = [];
var array2 = [];
// Preparing data
for (var i = 0, len = 100; i < len; ++i) {
array1[i] = 'a' + (i + 1);
array2[i] = 'b' + (i + 1);
}
var index = 3;
function insert (arr1, arr2, i) {
// Insert element to array
array1.splice(index - 1, 0, array2[i]);
index = ((index % 2) == 1) ? index + 9 : index + 7;
if ( index < arr2.length - 1) { insert(arr1, arr2, i + 1) }
return;
}
insert(array1, array2, 0);
array1.forEach( function (item) {
let output = (item.indexOf('b') !== -1) ? '<b>' + item + ' </b>'
: item + ' ';
$('#result').append(output);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="result"></div>
相关文章:
- 如何使用 node.js 比较两个 json 数组
- 用每小时的差值填充数组/列表-从下拉列表中给定两个时间值
- 访问$.ajax()函数中的两个不同数组
- 正在更新mongod中两个对象内部的数组
- 如何使用javascript合并两个对象数组
- 比较包含多个值对的两个JavaScript数组
- jQuery对象从html表中查询为两个一维数组,用于Chartist图表
- 检查来自不同数组的两个元素的一个属性是否相等
- 如何在javascript中合并两个对象数组
- JavaScript - 合并两个对象数组并根据属性值删除重复数据
- 效率:整数数组的一个子集中两个项之间的最大差值
- 将两个值组合成extjs 4.1的形式
- 如何将中的两个geoJSON功能集合添加到两个层组中
- 在 JQuery 验证中验证多个“数组命名”文件输入和下拉列表
- 在一个区间之间生成两个随机数组
- 使用两个捕获组和JavaScript的replace()函数
- 通过找到两个重复组之一的正则表达式组
- 从Javascript中的两个子数组中获取随机结果
- 如何在一个可选的非捕获组中创建两个捕获组
- paper.js:获取两个层/组的原始像素数据