在包含对象的数组中,检查是否存在任何这些对象中的键

时间:2017-02-06 18:45:03

标签: javascript arrays object ecmascript-6

我有一个对象数组,需要查看其中是否存在某个键。这就是我现在正在做的事情:

exports.rsaPublicKeyPem = (modulusB64, exponentB64) => {
   const modulus = new Buffer(modulusB64, 'base64');
   const exponent = new Buffer(exponentB64, 'base64');

   const modulusHex = prepadSigned(modulus.toString('hex'));
   const exponentHex = prepadSigned(exponent.toString('hex'));

   const modlen = modulusHex.length / 2;
   const explen = exponentHex.length / 2;

   const encodedModlen = encodeLengthHex(modlen);
   const encodedExplen = encodeLengthHex(explen);
   const encodedPubkey = `30${encodeLengthHex(
      modlen +
      explen +
      encodedModlen.length / 2 +
      encodedExplen.length / 2 + 2
      )}02${encodedModlen}${modulusHex}02${encodedExplen}${exponentHex}`;

   const derB64 = new Buffer(encodedPubkey,'hex').toString('base64');

   const pem = `-----BEGIN RSA PUBLIC KEY-----\n${derB64.match(/.{1,64}/g).join('\n')}\n-----END RSA PUBLIC KEY-----\n`;

  return pem;
};

有没有更好/更可接受的方式来做到这一点?

5 个答案:

答案 0 :(得分:4)

const arr = [{ id: 1, foo: 'bar' }, { id: 2 }]
var result = arr.some((value, index) => {
    return value.hasOwnProperty('bar')
});
console.log(result);

答案 1 :(得分:2)

我使用 Array.prototype.some() 功能:

const arr = [
  { id: 1, foo: 'bar' },
  { id: 2 }
];

var result = arr.some(e => e.hasOwnProperty('foo'));
console.log("The array contains an object with a 'foo' property: " + result);

var result = arr.some(e => e.hasOwnProperty('baz'));
console.log("The array contains an object with a 'baz' property: " + result);

答案 2 :(得分:1)

如果您只想要一个true / false来确定元素是否在那里,请使用'some'。它返回true / false。

const arr = [{ id: 1, foo: 'bar' }, { id: 2 }];
var key = 'foo';
var isInArray= arr.some(function(val, i) {
    return val[i][key];
});

答案 3 :(得分:1)

您可以使用Array#some

var arr = [{ id: 1, foo: 'bar' }, { id: 2 }]
result = arr.some(o => 'foo' in o)
console.log(result)

every()some()

之间的差异
  • 每隔:

它将检查所有对象上是否存在给定键,如果并非所有键都具有此键,则返回false。

  • 一些:

它将检查至少一个对象是否具有该密钥,如果有,则返回true。

答案 4 :(得分:0)

您可以使用Array#some

var arr = [{ id: 1, foo: 'bar' }, { id: 2 }],
    result = arr.some(o => 'foo' in o);

console.log(result);