【问题标题】:jQuery/JS Select Array Element where element contains n?jQuery / JS选择元素包含n的数组元素?
【发布时间】:2011-10-24 21:29:59
【问题描述】:

把我自己都弄糊涂了。

下面有一个字符串,我使用 .split 来形成一个数组。

1:new bubble:143:753:3:rgba(65,146,160,0.7)|2:new bubble:370:949:3:rgba(174,76,221,0.7)|3:new bubble:557:940:3:rgba(55,33,11,0.7)|4:new bubble:494:1170:3:rgba(61,68,191,0.7)|5:new bubble:431:736:3:rgba(233,54,149,0.7)|6:new bubble:236:836:3:rgba(14,133,141,0.7)|

字符串包含我所说的“气泡”,每个气泡都由 | 分割。所以你可以看到有 6 个气泡(还有一个空白)

然后我这次使用 .split 再次使用 : 作为拆分。所以我实际上有一个可以加载到变量中的数组;

Array 
bubble[0]{
            id = bubbleinfo[0],
            name = bubbleinfo[1],
            posx = bubbleinfo[2],
            posy = bubbleinfo[3],
            priority = bubbleinfo[4],
            color = bubbleinfo[5]
    }
bubble[1]{
            id = bubbleinfo[0],
            name = bubbleinfo[1],
            posx = bubbleinfo[2],
            posy = bubbleinfo[3],
            priority = bubbleinfo[4],
            color = bubbleinfo[5] 
        }
bubble[2]{
            id = bubbleinfo[0],
            name = bubbleinfo[1],
            posx = bubbleinfo[2],
            posy = bubbleinfo[3],
            priority = bubbleinfo[4],
            color = bubbleinfo[5] 
        }
bubble[3]{
            id = bubbleinfo[0],
            name = bubbleinfo[1],
            posx = bubbleinfo[2],
            posy = bubbleinfo[3],
            priority = bubbleinfo[4],
            color = bubbleinfo[5]     
        }
bubble[4]{
            id = bubbleinfo[0],
            name = bubbleinfo[1],
            posx = bubbleinfo[2],
            posy = bubbleinfo[3],
            priority = bubbleinfo[4],
            color = bubbleinfo[5]
        }          
bubble[5]{
            id = bubbleinfo[0],
            name = bubbleinfo[1],
            posx = bubbleinfo[2],
            posy = bubbleinfo[3],
            priority = bubbleinfo[4],
            color = bubbleinfo[5]
        }
bubble[6]{
            id = bubbleinfo[0],
            name = bubbleinfo[1],
            posx = bubbleinfo[2],
            posy = bubbleinfo[3],
            priority = bubbleinfo[4],
            color = bubbleinfo[5]
        }

所以它们基本上是这样形成的。我还是假设。

我的问题是我需要能够通过选择第二个数组维度的“id”来更新名称、posx、posy、优先级和颜色

所以伪代码类似于

foreach bubble[i]
do
if ID = $_post[ID]
get element 3 - replace new value
get element 2 - replace new value
i++

有人了解我吗?如果你这样做了,请你帮我解决一下。因为我不知道如何构造函数来做到这一点。

谢谢

欧文

【问题讨论】:

  • 你是如何创建这个字符串的?我建议您将数据编码为 JSON 而不是自定义格式。至于你的问题,it seems you just need to iterate over the array,尽管你可以使用一个对象并创建一个id->bubble 映射来改进它。
  • 数据必须存储在 cookie 中,因此它的结构是这样的。
  • 您可以将 json 存储在 cookie 中...它只是文本。
  • 我从来没有真正使用过 json,你能给我举个例子,我的一个字符串将如何重新格式化以适应它?
  • 可能是这样的:[{"posx": 143,"posy": 753,"priority": 3, "color": "rgba(65,146,160,0.7)"}, ...]。您可以随意选择。该格式类似于 JavaScript 对象字面量。更多信息:json.org

标签: jquery arrays


【解决方案1】:

如果我正确理解您的问题,jQuery.each 可以为您执行此操作:-

$.each([52, 97], function(index, value) { 
  alert(index + ': ' + value); 
});

您可以在这里找到更多信息:http://api.jquery.com/jQuery.each/


一个更清晰的例子:

var idYouAreLookingFor=2;
$.each(bubble, function(index, value) { 
  if(value.id==idYouAreLookingFor)
  {
      value.name='test';
     //profit.
  }
});

【讨论】:

  • 我刚刚重新阅读了我的问题并意识到我是多么的不清楚。基本上我需要一个函数来检查所有数组元素,直到找到等于我输入的查询的元素 [0]。
  • 嘿,我明白这一点,但我将如何更新第二个和第三个元素中的值并将它们放回字符串中?
  • 您的问题是如何在更新数据后将数据重新序列化为那种奇怪的格式?如果是这样,array.join (w3schools.com/jsref/jsref_join.asp) 会为您解决 - 但请认真考虑使用 json 代替! (w3schools.com/json/default.asp)
【解决方案2】:

这是我的建议:

使用 JSON 作为存储格式。现在,我不知道哪个值是哪个,但这里是 JSON 编码数据的示例:

[{"posx": 143,"posy": 753,"priority": 3, "color": "rgba(65,146,160,0.7)"}, ...]

然后您可以使用 JSON.parse [MDN] 从该数据创建一个 JavaScript 对象,如下所示:

// var obj = JSON.parse(json); is the same as:

var obj = [
    {
        posx: 143,
        posy: 753,
        priority: 3, 
        color: "rgba(65,146,160,0.7)"
    },
    ...
];

您的“气泡”的 ID 似乎也是连续的,从 1 开始。如果使它们从零开始,则不必显式存储它们。 ID 将是数组中的索引。

然后您可以像这样更改值:

obj[id].posx = newvalue;
obj[id].posy = another_newvalue;

然后用JSON.stringify [MDN]序列化整个数组:

var json = JSON.stringify(obj);

并将其存储在 cookie 中。

JSON 可用于带有json2.js 的旧版浏览器。

【讨论】:

  • 好的,谢谢,我会调查一下,因为我现在失败了,你可以看到 the-dot.co.uk/dev/Project%20v1 如果 Felix 你有某种形式的 IM 客户端可以交谈,也许你可以清理一些以合理的费用为我使用 json 的函数?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 2012-03-09
  • 2015-02-10
  • 1970-01-01
  • 2021-03-02
  • 2023-04-03
相关资源
最近更新 更多