如何仅在 Jquery/Javascript 中尚不存在时才将字符串添加到数组中
how to add a string to an array only if it doesn't exist yet in Jquery/Javascript?
当用户浏览我的应用程序时,我正在填充一个站点地图数组。
但是,我填充站点地图的逻辑是有缺陷的。这是我正在做的事情:
var siteMap = [],
j = siteMap.length;
$(document).on( "pagebeforechange", function( e, data ) {
if (j == 0 ){
// add cause sitemap has no elements
siteMap.push( { type: "external", data: data });
} else {
// loop through the sitemap object
for ( var i = 0; i < j; i++) {
// check if element is already stored
if ( data.toPage == self.options.siteMap[i].data.toPage ){
break;
}
self.options.siteMap.push( { type: "external", data: data } );
}
}
});
问题是我的休息时间没有按预期工作。我想遍历站点地图并将 data.toPage(像/some/page.html 这样的字符串)与我已经存储的内容进行比较。如果我找到匹配项,循环应该结束,而不会将新元素推送到站点地图。但是,现在我正在循环,如果在循环位置(1)处找不到元素,则中断不会触发,并且我会在每个循环上添加一个条目,直到条目匹配为止。
问题:
如何修复循环,使其仅在不存在匹配项时才添加一个条目?
感谢您的帮助!
编辑:
这就是我现在拥有的:
(function( $, window) {
$.widget("mobile.multiview",$.mobile.widget, {
options: {
siteMap = {};
},
eventBindings: function() {
$(document).on( "pagebeforechange", function( e, data ) {
var self = this;
if (!self.options.siteMap[data.toPage]){
self.options.siteMap[data.toPage] = { type: "external", data: data };
}
});
}
}) (jQuery,this);
循环在
每次迭代中执行测试。在找到要查找的内容之前,它会在每次迭代中添加新条目。
相反,您需要做的是查看该元素是否已在数组中,如果没有,则添加它。 更好的是,首先抛弃使用数组的想法,只使用"toPage"值作为对象属性。
var sitemap = {};
$(document).on( "pagebeforechange", function( e, data ) {
if (!sitemap[ data.toPage ])
sitemap[data.toPage] = { type: "external", data: data };
});
相关文章:
- 将字符串添加到页面url
- 如何将静态字符串添加到受信任的 ng-src
- 在这种情况下,如何将字符串添加到函数中 php
- 将字符串添加到短语 Javascript
- 将字符串添加到不区分大小写的 RegExp 中替换的事物开始
- 如何向变量字符串添加更多值
- 将查询字符串添加到当前URL中嵌入的查询的锚链接
- 使用JQuery将字符串添加到内联CSS中
- 在Javascript中作为字符串添加的整数
- JavaScript将字符串添加到数字而不是值
- 如何在javascript或jquery中为字符串添加一些数字
- 将字符串添加到吞咽流的开头
- 是否可以在正则表达式中向现有字符串添加新字符串
- 将字符串添加到 JavaScript 数组
- 使用 Javascript 通过表单将预定义的字符串添加到用户输入中
- EmberJs 将函数的返回字符串添加为类名
- 如何向字符串添加连字符(将其格式化为 16 位序列号)
- 如何仅在 Jquery/Javascript 中尚不存在时才将字符串添加到数组中
- 在 cordova 提示符下将子字符串添加到 results.input1
- 向 html 字符串添加粗体标记