【问题标题】:How can I get the first element of this array in this var declaration?如何在此 var 声明中获取此数组的第一个元素?
【发布时间】:2013-10-24 14:31:16
【问题描述】:

如果我使用元素 ID 10_food_select 执行此操作:

var id = $(sel).attr("id").split("_");

我得到一个这样的数组:

["10", "food", "select"] 

我想要的是 id = 10 (或任何第一个元素)。稍后我可以通过写id[0] 得到这个,但是我如何简单地使 id 等于拆分数组的第一个元素的值,在第一个 var 声明中?

【问题讨论】:

    标签: javascript jquery arrays split


    【解决方案1】:

    [] 与任何其他运算符非常相似。

    var id = $(sel).attr("id").split("_")[0];
    

    由于现在似乎每个人都在提供正则表达式,所以这是我的:

    var id = +/[^_]*/.exec($(sel).prop("id"));
    

    如果它是一个数字,你也可以这样做:

    var id = parseInt($(sel).prop("id"), 10);
    

    我认为这几乎涵盖了有用的单行代码。

    【讨论】:

    • 很遗憾,您得到了第一个答案,给出了多个选项,但没有得到“接受”。
    【解决方案2】:

    另一种方式

    var id = +($(sel).attr("id").replace(/_.+$/,''));
    

    【讨论】:

    • “将第一个下划线之后的所有内容替换为空”。聪明。
    • 很高兴有人注意到:)
    • “编号”?还是一个字吗?这是表达式前面+ 的工作吗?我一直在学习。
    • @Floris:编号不是一个词,而是+ 的工作,是的 :) 这是对数字的“隐式”转换。其他技巧包括不执行任何操作以转换为 32 位整数的位运算符和将!! 转换为布尔值。
    • @Floris:嗯,你可以使用Number(x)Boolean(x)String(x)。只是人们……不喜欢。没有充分的理由,可能:)
    【解决方案3】:

    你可以这样做:

    var id = $(sel).attr("id").split("_")[0];  // returns 10 
    

    这将立即为您提供正确的 id,甚至无需执行

    var id = $(sel).attr("id").split("_");   // returns ["10", "food", "select"] 
    id = id[0];                              // returns "10"
    

    【讨论】:

      【解决方案4】:

      我想你正在寻找这个:

      var id = $(sel).attr("id").split("_")[0];
      

      【讨论】:

      • 这就是我心中的答案,并不意味着我复制了它。 @弗洛里斯
      • 没关系 - 我没有指责你抄袭。但是,如果目标是为问题提供答案,则多次发布相同的内容,同时显示您也知道答案,不会使网站(作为问题和答案的存储库)更有用/更有价值。跨度>
      • 是的,你是对的,但是当我发布答案时,没有一个答案是时间问题。
      【解决方案5】:

      或者,如果您只需要拆分中的第一个,则可以使用正则表达式替换:

      var id = sel.id.replace(/^([^_]+).*/, '$1')
      

      注意:不需要$(sel).attr('id')sel.id 就足够了。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-11-16
        • 1970-01-01
        • 2011-05-04
        • 1970-01-01
        • 1970-01-01
        • 2012-06-05
        • 1970-01-01
        相关资源
        最近更新 更多