#javascript #arrays
#javascript #массивы
Вопрос:
Мне нужна функция для возврата из массивов a и b, нового массива, содержащего элементы из b, которых не существует в массиве a. Например:
a = [1,2,3,4]
b = [0,3,5]
return = [0, 5]
Но элементы — это массивы, например:
a = [["a","fd","asfd"],["adsf","fdf","dsf"]
Я много пробовал, но ничего не происходит. Это мой код:
function clean(a, b){
var ln = a.toString()
for(var i = 0, length = b.length; i < length; i ) {
if(-1 !== ln.indexOf(String(b[i]))){
b.splice(ln.indexOf(b[i].toString()), 1)
}
}
return shorter;
}
Это не работает.
Ответ №1:
Попробуйте это —
a = [1,2,3,4]
b = [0,3,5]
function clean(a, b){
var bb = b.slice(0); //making sure we are not changing the actual array
for(var i = 0; i < a.length; i ){
var index = bb.indexOf(a[i]);
if(index > -1){
bb.splice(index, 1);
}
}
return bb;
}
console.log(clean(a,b));
console.log(b);
Вывод :
[0, 5]
[0, 3, 5]
Ответ №2:
Я попробовал следующее, и это сработало нормально.
var b = [0,3,5];
var a = [1,2,3,4];
var ret = []
for(var i=0;i<b.length;i ){
var flag =0;
for(var j=0;j<a.length;j ){
if(a[j]===b[i]){
flag=1;
}
}
if(flag==0)
{
ret.push(b[i]);
}
}
console.log(ret);
Ответ №3:
// The question has two parts:
// The second in order of the question is:
// Make a flat list from a two-dimensional array:
aFlat = [].concat.apply([],a);
// The first is: Get all elements from b
// that are not contained in a (resp. aFlat):
c = b.filter( function(element) { return aFlat.indexOf(element) == -1 });