2016-11-28 2 views
-1

Как вы сравниваете два массива, особенно если первый массив является объектом с несколькими параметрами?сравнить массив, который имеет объект

truthCheck([ 
    { "user": "Tinky-Winky", "sex": "male" }, 
    { "user": "Dipsy", "sex": "male" }, 
    { "user": "Laa-Laa", "sex": "female" }, 
    { "user": "Po", "sex": "female" } 
], "sex"); 

Я думал о переходе через первый массив, а затем проверить, существует ли второй массив на первом. Выведите ответ. Каждый раз, когда я это делаю, я получаю пустой массив или в некоторых случаях просто число 0, 1, 2, 3.

+3

У вас есть два параметра: первый - это массив объектов, второй - строка. Правильно ли, что вы пытаетесь пересечь объекты в массиве и пытаетесь проверить, существует ли в них второй параметр? –

+0

Правильно, и если они существуют, я хочу распечатать их – iceveda06

+1

Итак ... вы не сравниваете два массива? Потому что это то, что говорит ваш титул. Возможно, вы захотите [изменить] ваш вопрос, чтобы обновить заголовок и первое предложение. –

ответ

0

Я добавлю реализацию в микс - как и другие использует array.forEach, но я думаю, что это логически проще сделать фильтрацию (проверка существования «секса») в .filter (), а затем выполните .forEach() в результате. Моя реализация - ES6, но вы также можете использовать старый синтаксис анонимных функций.

function truthCheck(arrayToCheck, propertyToCheck) { 
    arrayToCheck.filter(elem => elem.hasOwnProperty(propertyToCheck)).forEach(elem => console.log(elem[propertyToCheck])); 
} 
0

Если мое предположение верно, вы можете проверить, существует ли данное свойство в массиве, пункты

var teleTubbies = [{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}]; 
var searchProperty = "sex"; 

function truthCheck(arrayToCheck, propertyToCheck) { 
    arrayToCheck.forEach(function(item) { 
    if(item.hasOwnProperty(propertyToCheck)) 
     console.log(item[propertyToCheck]) 
    }); 
} 

truthCheck(teleTubbies, searchProperty); 
0

Фильтр входной массив объектов на основе условии, что указанное свойство существует на объекте (с помощью оператора in).

function truthCheck(objects, p) { 
    return objects.filter(e => p in e); 
} 
Смежные вопросы