Проверка ключа объекта

У меня есть этот массив объектов. Как передать список ключей в функцию checkArray для проверки ключей в одном объекте?

var test = [
  {
    date_issued: '2018-05-25',
    transaction_type: 'IMPORT',
    policy_number: '061/100/001052/2018',
    open_cover: false,
    endorsement_number: '',
    icc: 'ICC-A',
    insured_name: 'SAYONA STEEL LTD',
    insured_email: '[email protected]',
    insured_tin: '103 286 883',
    intermediary_name: 'MILMAR',
    intermediary_tin: '100-714-078',
    goods_category: 'Mineral Products',
    country_of_origin: 'HK',
    destination: 'Mwanza Region',
    conveyance: 'SEA',
    financier: '',
    currency_code: 'USD',
    exchange_rate_used: '2262.37',
    sum_insured: '23302411',
    premium: '33935.55',
    VAT: '5176.609322',
    unit_of_measure: 'UNITS',
    quantity: '800',
    cover_start_date: '2018-05-15'
  },
  {
    date_issued: '2018-05-25',
    transaction_type: 'IMPORT',
    policy_number: '061/100/001051/2018',
    open_cover: false,
    endorsement_number: '',
    icc: 'ICC-A',
    insured_name: 'URHOME COMPANY LTD',
    insured_email: '[email protected]',
    insured_tin: '132-209-898',
    intermediary_name: 'MILMAR',
    intermediary_tin: '100-714-078',
    goods_category: 'Base Metals And Articles Of Base Metal',
    country_of_origin: 'CN',
    destination: 'Dar es Salaam Region',
    conveyance: 'SEA',
    financier: '',
    currency_code: 'USD',
    exchange_rate_used: '2262.37',
    sum_insured: '54941202.98',
    premium: '58821.62',
    VAT: '8972.789492',
    unit_of_measure: 'UNITS',
    quantity: '2792',
    cover_start_date: '2018-05-15'
  }
];

function isKeyInObject(obj, key) {
  var res = Object.keys(obj).some(v => v == key);
  return res;
}

const checkArray = (test, key) => {
  let valid = true;

  test.map(item => {
    if (!isKeyInObject(item, key)) valid = false;
  });

  return valid;
};

console.info(checkArray(test, 'VAT'));

Как я могу передать сюда весь список ключей для их проверки? Сейчас я могу передать только один ключ. Я ищу что-то вроде checkArray(test, 'VAT','destination','insured_tin');

Поскольку вы уже знаете, как сравнивать ключи, я не понимаю, в чем проблема, с которой вы столкнулись?

Isaac 25.06.2018 13:18
if they exist and return true if they exist or return false if they exist? Можем ли мы начать с исправления вашей логики здесь .. :)
Keith 25.06.2018 13:19

@Keith, я обновил вопрос

ABEL MASILA 25.06.2018 13:28

массив строк и запускать эту функцию до тех пор, пока массив не закончится или пока он не вернет false?

Farhan Qasim 25.06.2018 13:36
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
4
58
2

Ответы 2

Вы можете легко добиться этого, используя функцию каждый массива

var test = [
  {
    date_issued: '2018-05-25',
    transaction_type: 'IMPORT',
    policy_number: '061/100/001052/2018',
    open_cover: false,
    endorsement_number: '',
    icc: 'ICC-A',
    insured_name: 'SAYONA STEEL LTD',
    insured_email: '[email protected]',
    insured_tin: '103 286 883',
    intermediary_name: 'MILMAR',
    intermediary_tin: '100-714-078',
    goods_category: 'Mineral Products',
    country_of_origin: 'HK',
    destination: 'Mwanza Region',
    conveyance: 'SEA',
    financier: '',
    currency_code: 'USD',
    exchange_rate_used: '2262.37',
    sum_insured: '23302411',
    premium: '33935.55',
    VAT: '5176.609322',
    unit_of_measure: 'UNITS',
    quantity: '800',
    cover_start_date: '2018-05-15'
  },
  {
    date_issued: '2018-05-25',
    transaction_type: 'IMPORT',
    policy_number: '061/100/001051/2018',
    open_cover: false,
    endorsement_number: '',
    icc: 'ICC-A',
    insured_name: 'URHOME COMPANY LTD',
    insured_email: '[email protected]',
    insured_tin: '132-209-898',
    intermediary_name: 'MILMAR',
    intermediary_tin: '100-714-078',
    goods_category: 'Base Metals And Articles Of Base Metal',
    country_of_origin: 'CN',
    destination: 'Dar es Salaam Region',
    conveyance: 'SEA',
    financier: '',
    currency_code: 'USD',
    exchange_rate_used: '2262.37',
    sum_insured: '54941202.98',
    premium: '58821.62',
    VAT: '8972.789492',
    unit_of_measure: 'UNITS',
    quantity: '2792',
    cover_start_date: '2018-05-15'
  }
];

const checkArray = (test, keys) => {
  return test.every(item => keys.every(key => item.hasOwnProperty(key)));
};

console.info(checkArray(test, ['VAT', 'currency_code']));
console.info(checkArray(test, ['VAT', 'unknown']));

Вы можете просто использовать hasOwnProperty() объекта в javascript

var test = [
  {
    date_issued: '2018-05-25',
    transaction_type: 'IMPORT',
    policy_number: '061/100/001052/2018',
    open_cover: false,
    endorsement_number: '',
    icc: 'ICC-A',
    insured_name: 'SAYONA STEEL LTD',
    insured_email: '[email protected]',
    insured_tin: '103 286 883',
    intermediary_name: 'MILMAR',
    intermediary_tin: '100-714-078',
    goods_category: 'Mineral Products',
    country_of_origin: 'HK',
    destination: 'Mwanza Region',
    conveyance: 'SEA',
    financier: '',
    currency_code: 'USD',
    exchange_rate_used: '2262.37',
    sum_insured: '23302411',
    premium: '33935.55',
    VAT: '5176.609322',
    unit_of_measure: 'UNITS',
    quantity: '800',
    cover_start_date: '2018-05-15'
  },
  {
    date_issued: '2018-05-25',
    transaction_type: 'IMPORT',
    policy_number: '061/100/001051/2018',
    open_cover: false,
    endorsement_number: '',
    icc: 'ICC-A',
    insured_name: 'URHOME COMPANY LTD',
    insured_email: '[email protected]',
    insured_tin: '132-209-898',
    intermediary_name: 'MILMAR',
    intermediary_tin: '100-714-078',
    goods_category: 'Base Metals And Articles Of Base Metal',
    country_of_origin: 'CN',
    destination: 'Dar es Salaam Region',
    conveyance: 'SEA',
    financier: '',
    currency_code: 'USD',
    exchange_rate_used: '2262.37',
    sum_insured: '54941202.98',
    premium: '58821.62',
    VAT: '8972.789492',
    unit_of_measure: 'UNITS',
    quantity: '2792',
    cover_start_date: '2018-05-15'
  }
];

const checkArray = (test, keys) => {
  let valid = true;
  test.map(object => {
    keys.map(key => {
        if (!object.hasOwnProperty(key)) {
            valid = false;
        }
    });
  });

  return valid;
};

console.info(checkArray(test,['VAT','intermediary_name']));
console.info(checkArray(test,['VAT','intermediary']));

Другие вопросы по теме