簡體   English   中英

如果需要條件-測試屬性是否存在(如果不存在),然后創建一個

[英]if condition needed - test if property exists if not then create one

下面是一些代碼,該代碼將覆蓋字符串中的屬性,但是此函數中缺少的條件是測試該屬性是否存在以及是否不存在然后創建它然后返回整個字符串的條件,否則將覆蓋該屬性然后返回目前正在執行的整個字符串。 我已經嘗試過了,但是沒有得到想要的結果。 有人可以看看下面的示例函數來嘗試動態創建新屬性嗎?

var cookieValue = 
   'id=1&state=normal&theme=purple:
    id=2&state=maximized&theme=pink:
    id=3&state=maximized&theme=black';

function setProperties(cookie, id , name, value, create) {
  var sections = $.map(cookie.split(":"), function (section) {
      var pairs;

      if (section.indexOf("id=" + id) === 0) {
          // if condition here - create a new property
          // else run code below
          pairs = $.map(section.split("&"), function (pair) {
              if (pair.indexOf(name + "=") === 0) {
                  return name + "=" + value;
              }else {                       
                  return pair;  
              }
          });

          return pairs.join("&");

      } else {
          return section;
      }
  });

  return sections.join(":");
}
alert(setProperties(cookieValue, '2', 'theme', 'green', true));
alert(setProperties(cookieValue, '2', 'color', 'orange', true)); // new property

請記住,如果您找到了該物業:

      if (section.indexOf("id=" + id) === 0) {
        // if condition here - create a new property
        // else run code below
        var found = false;
        pairs = $.map(section.split("&"), function (pair) {
            if (pair.indexOf(name + "=") === 0) {
                return name + "=" + value;
                found = true;
            } else {                       
              return pair;  
            }
        });

        section = pairs.join("&");
        if (!found) {
            section += "&" + name + "=" + value;
        }
    }
    return section; 

如果存在屬性,則將found的屬性設置為true。 否則,該屬性將附加到該部分。 工作提琴

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM