Как я могу проверить в массиве объектов, если один из объектов содержит только часть строки?

Как уже указывалось, вы пытаетесь создать реляционную базу данных из какой-либо реляционной базы данных, которую вы действительно не хотите делать, но в любом случае, если у вас есть случай, когда вы должны это сделать, это решение, которое вы можете использовать , Сначала мы делаем поиск foreach в коллекции A (или в вашем случае пользователей), и затем мы получаем каждый элемент как объект, тогда мы используем свойство объекта (в вашем случае uid) для поиска в нашей второй коллекции (в ваших комментариях к случаю), если мы может найти его, тогда у нас есть совпадение, и мы можем печатать или что-то делать с ним. Надеюсь, это поможет вам и удачи:)

db.users.find().forEach(
function (object) {
    var commonInBoth=db.comments.findOne({ "uid": object.uid} );
    if (commonInBoth != null) {
        printjson(commonInBoth) ;
        printjson(object) ;
    }else {
        // did not match so we don't care in this case
    }
});
0
задан Sebastian 17 January 2019 в 14:50
поделиться

3 ответа

Вы были почти там. Вам просто нужно было получить доступ к свойству name вашего объекта "s". В этом сценарии я использовал деструктуризацию , чтобы получить быстрый доступ к свойству «name».

const products=[{id:"pdc",code:"123456",name:"pompa"},{id:"kbr",code:"2365",name:"kit kbr"},{id:"boiler",code:"23165",name:"VPB"}];

const res = products.filter(({name})=>name.includes("kbr"));

console.log(res);

0
ответ дан kemicofa 17 January 2019 в 14:50
поделиться

Я бы использовал функцию Array.find (), потому что она останавливается на первом подходящем объекте:

const products = [
    {id: 'pdc', code: '123456', name: 'pompa'},
    {id: 'kbr', code: '2365', name: 'kit kbr'},
    {id: 'boiler', code: '23165', name: 'VPB'}
];

const testPattern = 'kbr';

const productsContains = (products, pattern) => 
    products.find(
      ({id, name}) => 
          id.indexOf(pattern) >= 0 || name.indexOf(pattern) >= 0
      ) ? true : false;

console.log(`productsContains '${testPattern}':`, productsContains(products, testPattern));

It не работает в IE, но есть polyfill.

0
ответ дан mgabor6 17 January 2019 в 14:50
поделиться

Использование some является лучшим подходом для этого, оно остановится, как только что-то найдет. для больших массивов это будет улучшение:)

products = [
{id: 'pdc', code: '123456', name: 'pompa'},
{id: 'kbr', code: '2365', name: 'kit kbr'},
{id: 'boiler', code: '23165', name: 'VPB'}
];

const result = products.some(product => Object.keys(product).some(key => product[key].includes('kbr')))
console.log(result)

0
ответ дан Prince Hernandez 17 January 2019 в 14:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: