以下は、文字列内のプロパティを上書きするコードですが、この関数に欠けているのは、プロパティが存在するかどうかをテストする条件であり、存在しない場合はそれを作成してから文字列全体を返し、そうでない場合はプロパティを上書きしてから返します現在行っている文字列全体。これを試みましたが、望ましい結果が得られません。以下のサンプル関数を使用して、その場で新しいプロパティを作成してみてください。
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