相关疑难解决方法(0)

如何在Array.prototype和Object.prototype上的javascript中定义方法,以便它不会出现在for循环中

我想在Array.prototype和Object.prototype上定义辅助方法.我目前的计划是做类似的事情:

Array.prototype.find = function(testFun) {
   // code to find element in array
};
Run Code Online (Sandbox Code Playgroud)

所以我可以这样做:

var arr = [1, 2, 3];
var found = arr.find(function(el) { return el > 2; });
Run Code Online (Sandbox Code Playgroud)

它工作正常,但如果我在循环中循环数组,for in方法显示为值:

for (var prop in arr) { console.log(prop); }
// prints out:
// 1
// 2
// 3
// find
Run Code Online (Sandbox Code Playgroud)

这将搞砸任何依赖于for in显示值的人(尤其是对象).更高版本的javascript具有内置于数组中的.map和.filter函数,但这些函数不会出现在for in循环中.如何创建更多不会出现在for in循环中的方法?

javascript function

12
推荐指数
2
解决办法
9907
查看次数

socket.io仅向位于房间A和B的用户广播

是否可以对位于A房间和B房间的名称空间的所有用户进行socket.io广播,而不是那些只在A房间或B房间的用户?

如果没有,我将如何自己实施?有没有办法检索位于给定房间的命名空间中的所有用户?

我在节点中使用socket.io 1.0

编辑:如果没有本机方法,我将如何创建自己的语法,如: socket.broadcast.in('room1').in('room2').emit(...)

javascript sockets node.js socket.io

12
推荐指数
1
解决办法
2712
查看次数

检查两个数组是否具有相同值的元素

可能重复:
javascript中数组交集的最简单代码

假设我有阵列:

[0,1]
Run Code Online (Sandbox Code Playgroud)

[1,2,3]
Run Code Online (Sandbox Code Playgroud)

我需要验证这些数组是否具有公共元素,对于这种情况,它将是 1

使用jQuery我按照以下方式检查:
1.获取第一个数组的长度
2.获取第二个数组的长度
3.合并数组
4.获取合并数组的长度
5.如果合并数组的长度不等于2个初始数组,那么它们有共同的元素

一行代码是:

(event2Zone[0].length+event2Zone[1].length)==$.unique($.merge(event2Zone[0].zo,event2Zone[1].zo)).length
Run Code Online (Sandbox Code Playgroud)

是否有更标准或更优雅的方式来执行相同的操作?

javascript arrays jquery

11
推荐指数
0
解决办法
2万
查看次数

如何在jquery中仅在2个数组之间找到公共元素

var array1 = [1, 2, 3, 4, 5, 6];
var array2 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
Run Code Online (Sandbox Code Playgroud)

我有两个像上面这样的数组.现在我想在MVC 4中使用jQuery执行以下操作.

  1. 如果两个数组的每个元素相等,则显示消息/警报.例如"所有记录已经存在."

  2. 如果两个数组的每个元素都不同,那么只需将它们全部添加到"VAR"中,例如var resultset = ....(将存储7,8,9)

  3. 如果两个数组之间通用的元素很少,那么公共元素显示带元素的消息,例如"记录1,2,3,4,5,6已经存在"并在"VAR"中添加不同的元素,例如var resultset = ....(其中7 ,8,9将存储).消息和差异元素集合都将同时执行.

javascript arrays jquery

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

快速查找两个字符串是否具有共同字符的方法

我有各种字符串比较和差异算法,但在某些时候,在我应用它们之前,我想找到两个字符串是否至少有一个共同的字符.这样我就可以跳过更复杂的功能.所以我需要一个非常快速的JavaScript函数来查找字符串A和字符串B是否至少有一个共同字符.

首先,我想为字符串A创建一个字符映射,然后检查字符串B中的每个字符对着该映射,直到找到某些内容.但后来我才意识到,如果两个字符串都很大并且它们有一个共同的第一个字符,那么为字符串A创建一个完整的映射效率会很低.

更新:有人回答使用indexOf(),这让我感到困惑.也许短语"有共同的字符"意味着"字符串是另一个字符串"是一样的吗?让我举一个我想要的例子:

例如JavaScript,Stop and stay有一个S共同的角色.其他例子是please look right,break the ice他们有一个k共同的性格.

javascript string comparison

9
推荐指数
2
解决办法
7098
查看次数

比较和过滤两个数组

我一直在尝试实现一个给出两个数组的函数,

array1的元素用作过滤掉array2中元素的条件.

例如:

array1= [apple, grapes, oranges]

array2= [potato, pears, grapes, berries, apples, oranges]
Run Code Online (Sandbox Code Playgroud)

在加入函数之后,array2应该有这样的元素:

filter_twoArrays(array1,array2)

array2= [grapes, apples, oranges]
Run Code Online (Sandbox Code Playgroud)

我尝试了下面的代码,使用for循环和array.splice(),但我看到的问题是,当我使用splice方法时,似乎它改变了for循环中array2的长度:

function filter_twoArrays(filter,result){

  for(i=0; i< filter.length; i++){
    for(j=0; j< result.length; j++){
      if(filter[i] !== result[j]){
        result.splice(j,1)
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

如何优化过滤功能将非常感谢任何输入

干杯!

javascript arrays loops filter array-splice

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

JavaScript对象数组包含相同的数组数据

我尝试将所有相同的数据值放入对象数组。这是我的输入:

var a = [{
    name: "Foo",
    id: "123",
    data: ["65d4ze", "65h8914d"]
  },
  {
    name: "Bar",
    id: "321",
    data: ["65d4ze", "894ver81"]
  }
]
Run Code Online (Sandbox Code Playgroud)

我需要一个类似的结果:

["65d4ze"]
Run Code Online (Sandbox Code Playgroud)

我尝试在我的对象上循环以获取此输出,但是我完全迷失了……我不知道如何知道结果是否进入所有数据数组。

javascript arrays

7
推荐指数
1
解决办法
1031
查看次数

给定两个数组,返回一个仅包含非交叉项的数组

我在JavaScript中遇到了问题.

我有两个数组,我想检查它们是否在某些元素上相交,然后删除这些元素并返回没有相交元素的新数组.

例如:

Array A ( 
[0] => 0 [1] => 1 
)

Array B ( 
[0] => 2 [1] => 1 
)
Run Code Online (Sandbox Code Playgroud)

我想检查一下并返回:

 Array result ( 
[0] => 0 [1] => 2 
)
Run Code Online (Sandbox Code Playgroud)

我怎么能用JavaScript做到这一点?

javascript jquery

6
推荐指数
2
解决办法
3874
查看次数

如何在javascript中避免for循环for循环

我已经编写了一段工作正常的代码.我想要一个新的数组,该数组由来自myArr的元素按orderArr中指定的顺序组成.但是,它在另一个for循环中使用for循环来匹配数组元素.

var myArr = ['a', 'b', 'c', 'd', 'e'];
var orderArr = ['e', 'c'];
var reArr = [];

for (var i = 0; i < orderArr.length; i++) {
  for (var k = 0; k < myArr.length; k++) {
    if (myArr[k] == orderArr[i]) {
      reArr.push(myArr[k]);
    }
  }
}

console.log(reArr);
Run Code Online (Sandbox Code Playgroud)

我经常听说在另一个for循环中使用for循环是不好的做法,即使每个都应该避免.

我怎么能重写这段代码.

javascript foreach for-loop

6
推荐指数
2
解决办法
3995
查看次数

jquery数组相交

我之前发布过这个问题为jquery/javascript:arrays - jquery/javascript:arrays.但由于我是一个完整的初学者,我已经提出错误的问题,也不理解答案...... :(

在未能实现给定的解决方案之后,我做了一些更多的研究,我发现我需要比较6个可能选择的数组并将它们相交以最终只显示重叠值.

所以希望这是一个更清晰的表述:

我有6个问题/ 6组单选按钮的答案.每个答案都有多个值(它们可以在最终的"建议"中显示1到38个项目).我正在收集数组中已检查无线电的值.我得到6个数组.

我如何交叉6个数组,以便从一个包含所有6个选项的交叉值中获得一个最终数组?如何将此最终数组的项目转换为选择器?

有人可以帮帮我吗?谢谢!

我的脚本现在看起来像:

(function($){
  $.fn.checkboxval = function(){
      var outArr = [];
      this.filter(':checked').each(function(){
            outArr.push(this.getAttribute("value"));
      });
      return outArr;
  };
})
(jQuery);
$(function(){
  $('#link').click(function(){
    var valArr1 = $('#vraag1 input:radio:checked').checkboxval();
    var valArr2 = $('#vraag2 input:radio:checked').checkboxval();
    var valArr3 = $('#vraag3 input:radio:checked').checkboxval();
    var valArr4 = $('#vraag4 input:radio:checked').checkboxval();
    var valArr5 = $('#vraag5 input:radio:checked').checkboxval();
    var valArr6 = $('#vraag6 input:radio:checked').checkboxval();
// var newArray = $.merge(valArr1, valArr2, valArr3, valArr4, valArr5, valArr6); <- test to see if I can merge them
// …
Run Code Online (Sandbox Code Playgroud)

javascript forms arrays jquery intersect

5
推荐指数
3
解决办法
1万
查看次数