通过属性在对象数组中查找值的语法是什么?

问题描述

在数组对象中查找值的语法是什么?

var pStData = [];

pStData.push({ st: 'WV',geom: 'xxx' });
pStData.push({ st: 'TX',geom: 'yyy' });

var sGeom = pStData.find(pStData => pStData.st == 'TX').geom;

console.log(sGeom);

在我的代码中,pStData.find(pStData => pStData.st == 'TX')undefined

解决方法

除了根本没有jQuery之外,您正在将数组定义为对象数组。定义这样的对象:

var pStData = {};
pStData['WV'] = {geom: 'xxx'};
pStData['TX'] = {geom: 'yyy'};

然后您可以通过以下方式简单地访问

var sGeom = pStData['WV'].geom;

您也可以通过以下方式访问它

var sGeom = pStData.WV.geom;

当然,如果只查找字符串值,则不需要定义对象,例如,这同样适用。

var pStData = {};
pStData['WV'] = 'xxx';
pStData['TX'] = 'yyy';

但是,如果以后需要添加额外的数据值,则将其定义为对象确实可以将来验证您的代码。永远不要害怕做一些将来的证明,它以后可以节省很多工作。

,

使用此功能:

python

所以,在您的情况下:

 function findObjectInArrayByProperty(array,propertyName,propertyValue) {
      return array.find((o) => { return o[propertyName] === propertyValue });
 }

output-> {st:'TX',geom:'yyy'}