Соединение двух списков NodeLists требуемым способом - PullRequest
0 голосов
/ 21 марта 2012

У меня есть два нодлиста nl_first & nl_second.

Любой из двух списков может быть больше другого.

  1. Я начну с nl_first и заполню массив таким образом, чтобы первый и второй элемент в массиве были nl_first [0] & nl_second [0].
  2. Аналогично, третий и четвертый будут nl_first [1] и nl_second [1].
  3. Теперь, если nl_second закончился, я просто добавлю элементы в nl_first в массив.

Визуально, если

nl_first = a,b,c,d,e
nl_second = x,y,z

Мне нужен мой массивиметь a,x,b,y,c,z,d,e.

Как я могу сделать это элегантно?

Ответы [ 3 ]

0 голосов
/ 21 марта 2012

моя грязная реализация,: p

var nl_first = "a,b,c,d,e";
var nl_second = "1,2,3";
console.log(customJoin(nl_first, nl_second));
//a,1,b,2,c,3,d,e

var nl_first = "a,b,c,d,e";
var nl_second = "1,2,3,4,5";
console.log(customJoin(nl_first, nl_second));
//a,1,b,2,c,3,d,4,e,5

var nl_first = "a,b,c,d,e";
var nl_second = "1,2,3,4,5,6";
console.log(customJoin(nl_first, nl_second));
//a,1,b,2,c,3,d,4,e,5,6

function customJoin(first, second) {
  if (first.length > second.length) {
    var secondArray = second.split(',');
    secondArray.reverse();
    var result = first.replace(/,/g, function (text) {
      var item = secondArray.pop();
      return (item) ? text + item + text: text;
    }); 
    return result;
  } else {
    var firstArray = first.split(',');
    firstArray.reverse();
    second = ',' + second;
    var result = second.replace(/,/g, function (text) {
      var item = firstArray.pop();
      return (item) ? text + item + text: text;
    }); 
    result = result.replace(/^,/, '');
    return result;
  }
}
0 голосов
/ 21 марта 2012
    var a = ['a', 'b', 'c', 'd', 'e', 'f'];
    var b = ['j', 'r', 'o', 't', 'a'];

    function mergeArrays(a, b)
    {

        var c = [];
        var len = a.length;
        if (b.length > len) len = b.length;
        for (var i = 0; i < len; i++)
        {
            if (i < a.length) c.push(a[i]);
            if (i < b.length) c.push(b[i]);
        }
        alert(c);
    }

    $().ready(function ()
    {
        mergeArrays(a, b);
        mergeArrays(b, a);
    });
0 голосов
/ 21 марта 2012
var one = ['a', 'b', 'c', 'd', 'e'];
var two = ['x', 'y', 'z'];
var combined = [];
for (var i = 0; i < one.length; i++) {
  combined.push(one[i]);
  if (two[i]) {
    combined.push(two[i]);
  }
}
console.log(combined);
// ["a", "x", "b", "y", "c", "z", "d", "e"]

Имейте в виду, что если два длиннее, чем один, два дополнительных элемента не окажутся в массиве.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...