Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中,将对象对链接在一起而不接触它们_Javascript_Design Patterns_Object - Fatal编程技术网

在javascript中,将对象对链接在一起而不接触它们

在javascript中,将对象对链接在一起而不接触它们,javascript,design-patterns,object,Javascript,Design Patterns,Object,我有一个简单的问题,我在寻找优雅的解决方案 在我的html中有一个列表。我使用jquery将其项映射到数组中。所以我有一个对象数组。然后,我再次使用jquery按钮为每个项目创建了一个。所以我有两对,每对中都有项目和按钮 现在让我们假设,我想做一个结构,它将以某种方式把这些对连接在一起。所以,如果我使用jquery选择任何元素,那么我将能够找到与之关联的元素。我还有一些想法,但看起来太复杂了。我正在寻找设计模式或一些非常接近它 HTML结构: <ul> <li>i

我有一个简单的问题,我在寻找优雅的解决方案

在我的html中有一个列表。我使用jquery将其项映射到数组中。所以我有一个对象数组。然后,我再次使用jquery按钮为每个项目创建了一个。所以我有两对,每对中都有项目和按钮

现在让我们假设,我想做一个结构,它将以某种方式把这些对连接在一起。所以,如果我使用jquery选择任何元素,那么我将能够找到与之关联的元素。我还有一些想法,但看起来太复杂了。我正在寻找设计模式或一些非常接近它

HTML结构:

<ul>
    <li>item 1</li>
    <li>item 2</li>
    <li id="active">item 3</li>
</ul>
到目前为止,我的想法在javascript/jquery中不起作用,它非常简单:

var list = [];

$('li').each(function() {
    list.push($(this));
    });

// this should be object, that links list items with buttons
var linker = {};

for (var item in list) {
    var button = $('<button>Do something!</button>');

    // this part is crazy O.o
    linker[list[item]] = button;
    linker[button] = list[item];
    // it doesnt work, becouse toString() function make from any of these objects "[object Object]"
}


// Now code like this should be able to find button that belongs to item 3

var active = $('#active')[0];

var result = linker[active];
请告诉我最简单的方法,如何在不接触其属性的情况下将两个对象链接在一起。谢谢你的帮助

如何将两个对象链接在一起而不接触其属性


正如您所看到的,作为键值映射的对象不起作用,因为它的键是字符串化的。在未来的JavaScript中,您将能够使用更适合您的或甚至更适合您的,但这还不可能。但是,您可以使用一种通过将键和值对象存储在具有相应索引的数组中来工作的方法。如果您自己实现,还可以在相同的阵列上执行反向查找。

触摸它们有什么问题?这是最简单、最有效的解决方案。你可以用它。