相关疑难解决方法(0)

如何确定对象是否在数组中

我需要确定一个对象是否已经存在于javascript中的数组中.

例如(虚拟代码):

var carBrands = [];

var car1 = {name:'ford'};
var car2 = {name:'lexus'};
var car3 = {name:'maserati'};
var car4 = {name:'ford'};

carBrands.push(car1);
carBrands.push(car2);
carBrands.push(car3);
carBrands.push(car4);
Run Code Online (Sandbox Code Playgroud)

现在"carBrands"数组包含所有实例.我现在正在寻找一个快速的解决方案来检查car1,car2,car3或car4的实例是否已经在carBrands数组中.

例如:

var contains =  carBrands.Contains(car1); //<--- returns bool.
Run Code Online (Sandbox Code Playgroud)

car1和car4包含相同的数据但是不同的实例它们应该被测试为不相等.

我是否在创建时向对象添加了哈希值?或者有更快的方法在Javascript中执行此操作.

我在这里寻找最快的解决方案,如果是脏的,那么它必须是;)在我的应用程序中,它必须处理大约10000个实例.

没有jquery

javascript

168
推荐指数
9
解决办法
27万
查看次数

JavaScript在数组中

假设我有这个:

var blockedTile = new Array("118", "67", "190", "43", "135", "520");
Run Code Online (Sandbox Code Playgroud)

有更多的数组元素,但为了便于阅读,这些元素很少.无论如何,我可以做一个"for"循环但每次点击地图时它会做500个循环...有没有其他方法可以查看某个字符串是否在数组中?

javascript

133
推荐指数
11
解决办法
18万
查看次数

根据值列表检查变量相等性

我正在检查一个变量,例如foo,与多个值的相等性.例如,

if( foo == 1 || foo == 3 || foo == 12 ) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

关键是这个繁琐的任务代码相当多.我想出了以下内容:

if( foo in {1: 1, 3: 1, 12: 1} ) {
    // ...
}
Run Code Online (Sandbox Code Playgroud)

但这并不完全吸引我,因为我必须为对象中的项目提供冗余值.

有没有人知道对多个值进行相等检查的正确方法?

javascript

122
推荐指数
8
解决办法
11万
查看次数

如何'缩小'Javascript代码

JQuery有两个版本供下载,一个是Production(19KB,Minified和Gzipped),另一个是Development(120KB,Uncompressed Code).

现在是紧凑的19kb版本,如果你下载它,你会看到仍然是一个javascript可执行代码.他们是如何紧凑的呢?我怎么能像这样'缩小'我的代码呢?

javascript gzip

95
推荐指数
4
解决办法
7万
查看次数

怎么!!〜(不是不是波浪形/爆炸声波)改变'包含/包含'数组方法调用的结果?

如果您在这里阅读jQuery inArray页面上的注释,那么有一个有趣的声明:

!!~jQuery.inArray(elm, arr) 
Run Code Online (Sandbox Code Playgroud)

现在,我相信双感叹号会将结果转换为类型boolean,值为true.我不明白的是,~在所有这些中使用了tilde()运算符是什么?

var arr = ["one", "two", "three"];
if (jQuery.inArray("one", arr) > -1) { alert("Found"); }
Run Code Online (Sandbox Code Playgroud)

重构if声明:

if (!!~jQuery.inArray("one", arr)) { alert("Found"); }
Run Code Online (Sandbox Code Playgroud)

分解:

jQuery.inArray("one", arr)     // 0
~jQuery.inArray("one", arr)    // -1 (why?)
!~jQuery.inArray("one", arr)   // false
!!~jQuery.inArray("one", arr)  // true
Run Code Online (Sandbox Code Playgroud)

我也注意到,如果我把波浪号放在前面,结果是-2.

~!!~jQuery.inArray("one", arr) // -2
Run Code Online (Sandbox Code Playgroud)

我不明白这里代字号的目的.有人可以解释一下或指向我的资源吗?

javascript jquery operators bitwise-operators

93
推荐指数
10
解决办法
2万
查看次数

如何将光标移动到可信实体的末尾

我需要contenteditable像在Gmail备注小部件上一样将插入符移动到节点的末尾.

我在StackOverflow上读取了线程,但这些解决方案基于使用输入,它们不适用于contenteditable元素.

javascript contenteditable cursor-position

73
推荐指数
7
解决办法
5万
查看次数

在Javascript数组中测试值

在SQL Server中,我可以说:

WHERE X IN(1,2)
Run Code Online (Sandbox Code Playgroud)

您将如何在JavaScript中重写以下内容:

if (X==1 || X==2) {}
Run Code Online (Sandbox Code Playgroud)

javascript

59
推荐指数
4
解决办法
5万
查看次数

Jquery,检查数组中是否存在值

我相信这个问题对于那些玩java script/jquery的人来说相当容易.

var arr = new Array();

$.map(arr, function() {
 if (this.id == productID) {
   this.price = productPrice;
 }else {
  arr.push({id: productID, price: productPrice})
 }
}
Run Code Online (Sandbox Code Playgroud)

我猜上面的代码以非常简单的方式解释了我想要的东西.我想这个$ .map会像这样工作但不幸的是我无法得到这个结果.

这样做最简单,最优雅的方法是什么?我是否真正通过所有阵列只是为了找出钥匙的价值是否存在?

Jquery有类似的东西isset($array['key'])吗?

编辑

我试图使用inArray,但即使有匹配,它也会不断向数组添加对象.

if ( $.inArray(productID, arr) > -1) {
   var number = $.inArray(productID, arr);
   orderInfo[number].price = parseFloat(productPrice);
}else {
   orderInfo.push({id:productID, price:parseFloat(productPrice)});
}
Run Code Online (Sandbox Code Playgroud)

javascript arrays jquery loops

59
推荐指数
5
解决办法
21万
查看次数

检查数组中是否存在值(AngularJS)

目前我正在使用forEach()angular 的-method来检查对象数组的新值.但这是错误的方法,因为例如在列表中有20个对象.当我用现有文章创建一个对象时,forEach中的if语句告诉一次该文章存在,而19次则不存在.

以下代码:

var list = [];

articlelist.forEach(function (val) {
   list.push(val.artNr);
});

$log.info(list);
Run Code Online (Sandbox Code Playgroud)

articlelist包含所有20个对象.为了比较我只需要artNr.因为当用户创建新文章时,应该是if-Statement来检查添加的artNr是否已经存在.

$scope.createItem = function (createItem) {
  if(list.artNr === createItem.artNr) {
      $scope.message = 'artNr already exists!';
  }
...
};
Run Code Online (Sandbox Code Playgroud)

问题是,list.artNr返回"undefined",因为list变量是一个数组:

在console =>中列出输出Array ["AB001", "AB002", "AB003", "AB004"],

createItem output:=> Object { artNr: "AB001", description: "New Article" ...}

如何将新创建的对象与列表变量中的数组进行比较?

javascript arrays object angularjs angularjs-controller

56
推荐指数
2
解决办法
23万
查看次数

JavaScript将数组项移到前面

我想检查一个数组是否包含"role".如果是这样,我想移动"role"到数组的前面.

var data= ["email","role","type","name"];
if ("role" in data) data.remove(data.indexOf("role")); data.unshift("role")
data;
Run Code Online (Sandbox Code Playgroud)

在这里,我得到了结果:

["role", "email", "role", "type", "name"]

我怎样才能解决这个问题?

javascript arrays

52
推荐指数
10
解决办法
4万
查看次数