2016-11-21 5 views
-2

У меня есть массив a= ["APP","COM", "REJ" , "COM APP"] и b= [23,54,56,24].A and B имеют одинаковую длину. Как получить все элементы массива B, в которых значения массива a содержат VALUE как APPПолучить значения массива со ссылкой на другой массив

здесь, в массиве a есть APP в APP, COM APP, как `return [23, 24] как массив.

+0

** Основная идея: ** Создание массива C. перебирать массив A - если элемент А не пусто, добавьте соответствующий элемент из массива B к массиву C. Сделайте это вы сами ничего не узнаете, если другие люди пишут вам код. –

ответ

2

var a= ["3","", "6"]; 
 
var b= [23,54,56]; 
 

 
function selector(e, i){ return {e, i}; } 
 
function filter(e){ return e.e != "" } 
 
function selector2(e){ return b[e.i] } 
 

 
var c = a.map(selector).filter(filter).map(selector2); 
 
console.log(c);

1

Вы можете использовать цикл для получения результата

var a= ["3","", "6"], b= [23,54,56], c = []; 
 
for (var i = 0; i < a.length; i++){ 
 
    if(a[i] !== "" && b[i]) 
 
     c.push(b[i]) 
 
} 
 

 
console.log(c)

+1

Я обновил ваш ответ, чтобы использовать «! ==» вместо «! =». «! =» - это плохая форма для большинства сравнений сравнений в javascript – Adrian

2

Вы можете использовать фильтр для того чтобы достигнуть того, что вам нужно. Вот что вы могли бы сделать.

var a = ["3", "", "6"]; 
 
var b = [23, 54, 56]; 
 

 
var result = b.filter((val, idx) => a[idx] !== ""); 
 

 

 
var resultWithEs5 = b.filter(function(val, idx) { 
 
    return a[idx] !== ""; 
 
}); 
 

 
console.log(result); 
 

 
console.log(resultWithEs5);

0

Вы можете сделать это с помощью метода Массив фильтра.

a= ["3","", "6"]; 
 
    b= [23,54,56]; 
 
    result = b.filter((ele, index) => { 
 
\t  return a[index] !== ''; // your condition, here is not false. 
 
    }) 
 
    console.log(result)

Detail ссылка: Array.prototype.filter

0

Вот мое решение. Надеюсь, поможет!

var a= ["3","", "6"], b= [23,54,56] 
 

 
var element = ""; 
 

 
for(var i in a){ 
 
    if(a[i] == ""){ 
 
     element = i; 
 
    } 
 
} 
 
var index = b.indexOf(b[element]); 
 

 
if (index > -1) { 
 
    b.splice(index, 1); 
 
} 
 
console.log(b)

Смежные вопросы