プロパティの値によってオブジェクトの配列からJavaScriptオブジェクトを取得する

例えば、4つのオブジェクトの配列があるとします。

var jsObjects = [
   {a: 1, b: 2}, 
   {a: 3, b: 4}, 
   {a: 5, b: 6}, 
   {a: 7, b: 8}
];

3番目のオブジェクト({a: 5, b: 6})をプロパティ b の値で取得する方法はありませんか?

プロパティが値にマッチするオブジェクトの Filter 配列を返します。

var result = jsObjects.filter(obj => {
  return obj.b === 6
})

MDN Docs on Array.prototype.filter()][1]を参照してください。

const jsObjects = [
  {a: 1, b: 2}, 
  {a: 3, b: 4}, 
  {a: 5, b: 6}, 
  {a: 7, b: 8}
]

let result = jsObjects.filter(obj => {
  return obj.b === 6
})

console.log(result)

配列の最初の要素/オブジェクトの値を Find し、そうでなければ undefined を返します。

var result = jsObjects.find(obj => {
  return obj.b === 6
})

MDN Docs on Array.prototype.find()]2を参照してください。

const jsObjects = [
  {a: 1, b: 2}, 
  {a: 3, b: 4}, 
  {a: 5, b: 6}, 
  {a: 7, b: 8}
]

let result = jsObjects.find(obj => {
  return obj.b === 6
})

console.log(result)

[1]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

解説 (19)

なぜforループに反対なのかわかりませんが(おそらくforループという意味であって、特にfor...inという意味ではないと思います)、forループは高速で読みやすいです。いずれにしても、いくつかの選択肢があります。

フォー・ループ。


function getByValue(arr, value) {

  for (var i=0, iLen=arr.length; i
解説 (6)

私の理解が正しければ、あなたは配列の中で b プロパティが 6 であるオブジェクトを見つけたいのですね?

var found;
jsObjects.some(function (obj) {
  if (obj.b === 6) {
    found = obj;
    return true;
  }
});

あるいはアンダースコアを使っていたら

var found = _.select(jsObjects, function (obj) {
  return obj.b === 6;
});
解説 (4)