2016-11-08 3 views
-1

У меня есть следующий массивПроверьте список массива существует в массиве объектов

var data = ["004", "456", "333", "555"]; 

У меня также есть массив объектов, как это.

Object {Results:Array[2]} 
Results:Array[2] 
    [0-1] 
     0:Object 
      id="004"  
      name: "Rick" 
      Active: "false" 
     1:Object 
      id="005"  
      name:'david' 
      Active: "false" 

Как вы можете видеть, идентификатор с 004 состоит из массива, а также объекта. Я хочу проверить, сколько элементов из массива «данные» присутствуют в объекте «Результаты».

Конечный результат должен быть

data = ["004"]; 

Может кто-нибудь, дайте мне знать, как искать этот

ответ

1

без underscore.js

var data = ["004", "456", "333", "555"]; 
 
arr = [{ 
 
    id: "004", 
 
    name: "Rick", 
 
    Active: "false" 
 
}, { 
 
    id: "005", 
 
    name: 'david', 
 
    Active: "false" 
 
}]; 
 

 
out = []; 
 
for (var i = 0; i < arr.length; i++) { 
 
    for (var j = 0; j < data.length; j++) { 
 
    if (arr[i].id === data[j]) 
 
     out.push(data[j]); 
 
    } 
 
} 
 
console.log(out);

С underscore.js

var data = ["004", "456", "333", "555"]; 
 
arr = [{ 
 
    id: "004", 
 
    name: "Rick", 
 
    Active: "false" 
 
}, { 
 
    id: "005", 
 
    name: 'david', 
 
    Active: "false" 
 
}]; 
 

 
out = []; 
 

 
_.each(arr, function(value1, key1, obj1) { 
 
    _.each(data, function(value, key, obj) { 
 
    if (value1.id == value) out.push(value); 
 
    }); 
 
}); 
 

 
console.log(out);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="http://underscorejs.org/underscore-min.js"></script>

+0

@ Mahi- Можете ли вы также сообщить мне, какие изменения мне нужно будет сделать, если я хочу, чтобы непревзойденные элементы «данных» в 'arr' –

+0

вы хотите только id в arr ?? – Mahi

+0

@ Mahi-, как показано выше, 004 будет выходным, так как это единственное значение, которое присутствует в 'arr'. Я хочу, чтобы результат был ['456', '333', '555'], указывая, что эти значения отсутствуют в 'arr'. любая идея, как достичь этого? –

0

Я предполагаю следующий код (не проверено)

l_return = []; 
for (l_cnt = 0; l_cnt < Results.length - 1; l_cnt++) { 
    if (data.indexof(Result[l_cnt].id) != -1) l_return.push(Result[l_cnt].id) 
} 
data = l_return 
+0

Не забудьте использовать 'var', если вы действительно хотите глобалам. –

0

Это должно дать вам то, что вы ищете.

var data = ["004", "456", "333", "555"]; 
 
var results = [ 
 
    { 
 
    id: "004", 
 
    name: "Rick", 
 
    Active: "false" 
 
    },{ 
 
    id: "005", 
 
    name: "david", 
 
    Active: "false" 
 
    } 
 
]; 
 

 

 
var found = []; 
 
results.forEach(i => { 
 
    if(data.includes(i.id)){ 
 
    if(!found.includes(i.id)) found.push(i.id); 
 
    } 
 
}); 
 

 
console.log(found) // ["004"]

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

  • Нет связанных вопросов^_^