[英]How to get object from array by object's unique property value?
基本上所有的事情都带有标题:如何通过对象的属性值从数组中获取对象,而对象的属性值是唯一的?
情况:
我当前的策略是将id attribute
赋予该对象的属性ID的div
(所有ID都是唯一的,请看下面的对象数组 ),如下所示:
<div id="3590" class="my-div"></div>
现在,当单击该div
时,我将获得id attribute
并且需要找到正确的对象,因为我还需要获取其他一些属性,并对某些属性进行一些更改。
为什么我这样做:
这似乎是唯一的方法,因为正如在其他问题中告诉我的那样 ,即使此div
是对象的属性之一,也无法访问该对象(请查看下面的对象数组 )。
如果不是这样,请告诉我。 这是非常重要的!
对象数组:
0: myObject
__e3_: Object
div: div#3590.my-div
gm_accessors_: Object
gm_bindings_: Object
id: 3590
latlng: _.K
map: _.ng
uh: Object
__proto__: c
1: myObject
__e3_: Object
div: div#3591.my-div
gm_accessors_: Object
gm_bindings_: Object
id: 3591
latlng: _.K
map: _.ng
uh: Object
__proto__: c
//thousands of objects
该数组中可以有成千上万个对象,这就是为什么我在问题中添加了“最快”一词的原因:我担心性能,因为还有其他事情在进行。
另外,我更喜欢香草JS
因为我目前正在学习它,但是如果您知道jQuery
快速好方法,请继续,我将自己进行转换。
更多细节:
还要保留对元素中相应对象的引用。
因此,每当单击元素时,元素对象本身将具有对相应对象的引用。 无需从数组中查找。
是的,请注意名称冲突。 将对象分配给新键,以便该对象不会替换元素对象现有键的值。
对于旧的浏览器,我不确定它们是否可以渲染数千个元素。
例:
var element = document.createElement("div");
element.myObj = {id: 3306, name: 'coolBoy'}; //make sure key, 'myObj' in this case, doesn't already exist.
var myArray = [];
myArray.push(element.myObj); //if you need to keep in array as well.
element.onclick = function(e){
console.log(e.currentTarget.myObj.name);
};
function getObjectFromId(id) {
return ARR.filter(function (obj) {
return obj.id === id;
})[0];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.