лодаш; заменить и объединить два массива строк

Есть ли какая-либо функция в lodash для объединения двух массивов, например;

var arr_1 = ['1', '0', '1'], arr_2 = ['0', '1', '1'];

Результат должен вернуться:

console.log(new_arr); // ['0', '0', '1']

Обновить

Каждый массив имеет 3 элемента (строки). Всякий раз, когда '0' встречается в любом из двух массивов, он должен оставаться в результате.


person numediaweb    schedule 13.04.2015    source источник
comment
И как бы вы получили этот результат, первое число из второго массива, затем второе число из первого массива и т. д. Есть ли здесь система? Должен ли он выбрать наименьшее число или что?   -  person adeneo    schedule 13.04.2015
comment
Как должен определяться результат? Если оба индекса равны '1', то '1', иначе '0'?   -  person Jonathan Lonowski    schedule 13.04.2015
comment
Почему бы вам не взглянуть на документацию, на которую вы ссылаетесь?   -  person Felix Kling    schedule 13.04.2015
comment
только что обновил вопрос. Спасибо.   -  person numediaweb    schedule 13.04.2015
comment
@FelixKling Я нашел, но не смог найти ничего похожего на то, что мне нужно.   -  person numediaweb    schedule 13.04.2015


Ответы (2)


Что насчет этого :

ES5:

_.map(_.zip(arr_1,arr_2), function(values) { 
      return values[0] <= values[1] ? values[0] : values[1]; 
})

ES6: (намного лучше)

_.zip(arr_1,arr_2).map( v => v[0] <= v[1] ? v[0] : v[1] ); 

Это не просто метод, он использует lodash zip.

person Giuseppe Pes    schedule 13.04.2015

Следующее должно дать вам то, что вам нужно. Он использует flatten() для создания одного массива, а оттуда reduce() для создания нового массива с разрешенными дубликатами '0' и удалением всех остальных дубликатов.

_([arr_1, arr_2])
    .flatten()
    .reduce(function(result, item) {
        if (item === '0' || !_.includes(result, item)) { 
            result.push(item);
        }
        return result; 
    }, []);
person Adam Boduch    schedule 13.04.2015