相关疑难解决方法(0)

更改数组传递给函数

我将2个数组传递给函数,并希望将特定条目从一个数组移动到另一个数组.moveDatum函数本身使用underscorejs的方法拒绝和过滤.我的问题是,原始数组没有改变,好像我是将数组作为值而不是作为引用传递.特定条目被正确移动,但正如我所说,效果只是本地的.我需要改变什么才能使原始阵列发生变化?

调用函数:

this.moveDatum(sourceArr, targetArr, id)
Run Code Online (Sandbox Code Playgroud)

功能本身:

function moveDatum(srcDS, trgDS, id) {
    var ds = _(srcDS).filter(function(el) {
        return el.uid === uid;
    });
    srcDS = _(srcDS).reject(function(el) {
        return el.uid === uid;
    });
    trgDS.push(ds[0]);
    return this;
}
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助

javascript jquery underscore.js

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

2个数组改变而不是1

我正在制作一个有2个阵列的游戏,但是当我不想要它时,一个阵列会发生变化.浏览器中控制台的示例:

A=[1,2,3,4,5]
B=[6,7,8,9,10]
A=B
A.push(11)
A =[6, 7, 8, 9, 10, 11]
B =[6, 7, 8, 9, 10, 11]
Run Code Online (Sandbox Code Playgroud)

A很好但是有办法让B留下来 [6,7,8,9,10]

javascript

5
推荐指数
2
解决办法
99
查看次数

为什么这个JavaScript属性返回空字符串,而JavaScript函数工作正常?

考虑这个简单的JavaScript模块模式:

var human = (function () {
    var _name = '';
    return {
        name: _name,
        setName: function (name) {
            _name = name;
        }
    }
})();
human.setName('somebody');
alert(human.name); // shows an empty string
human = (function () {
    var _name = '';
    return {
        name: function() {
            return _name;
        },
        setName: function (name) {
            _name = name;
        }
    }
})();
human.setName('somebody');
alert(human.name()); // shows 'somebody'
Run Code Online (Sandbox Code Playgroud)

为什么第二个闭包工作正常,而第一个闭合不起作用?见这里的例子.

还请看这个小提琴,它证明可以使用简单的属性而不是getter函数.

javascript closures properties getter-setter

4
推荐指数
1
解决办法
1683
查看次数

Javascript闭包 - 绑定值而不是引用

以下示例取自"Javascript:The good parts"一书.作者说,辅助函数返回一个绑定到当前值的函数var i.

任何人都可以解释是什么让它绑定VALUE而不是REFERENCE var i,因为helper函数是一个add_the_handler函数闭包,应该只看到引用var i:

var add_the_handlers = function (nodes) {
   var helper = function (i) {
      return function (e) {
        alert(i);
      };
    };
    var i;
    for (i = 0; i < nodes.length; i += 1) {
       nodes[i].onclick = helper(i);
    }
};
Run Code Online (Sandbox Code Playgroud)

javascript closures

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

Javascript公共/私人变量

我有一个包含公共和私有变量的对象.公共变量被分配给私有变量(我认为),但是,每当我使用函数修改私有变量时,公共变量都不会更新.

var foo = (function() {
    //Private vars
    var a = 1;

    return {
        //Public vars/methods
        a: a,
        changeVar: function () {
            a = 2;
        }
    }
})();
alert(foo.a);  //result: 1
foo.changeVar();
alert(foo.a);  //result: 1, I want it to be 2 though
Run Code Online (Sandbox Code Playgroud)

现在我知道如果我将changeVar中的行更改为this.a = 2;有效,但它不会更新私有变量.我想同时更新私有变量和公共变量.这可能吗?

JsFiddle显示问题

javascript variables scope private public

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

GetElementById 无法获取值

你知道这是为什么吗

function deleteInputOnClick(input){
    champ = document.getElementById(input);
    if(champ.value =='E-mail'){
        champ.value = "";
    }
}
Run Code Online (Sandbox Code Playgroud)

工作,但这样

function deleteInputOnClick(input){
    champ = document.getElementById(input).value;
    if(champ=='E-mail'){
        champ= "";
    }
}
Run Code Online (Sandbox Code Playgroud)

不是吗?

这可能是一个愚蠢的小错误,但我真的不知道它可能在哪里。

谢谢

javascript element get

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

从对象数组中重现对象的元素

我有数组NatArray和对象NatObj,这个对象我推送到前一个数组,但在检索它只获取最后一个条目时,这是我的代码

var tArray = [];
var tObj ;
tObj = {};
tObj.TranslatedLocIpAddr = 202116107;
tObj.TranslatedLocPort = 123;
tObj.LocIp = 50529027;
tObj.LocPort = 324;
tObj.LocPortRange = 5;
count = 0;
tArray.push(tObj) ;  

tObj.TranslatedLocIpAddr = 202116108;
tObj.TranslatedLocPort = 130;
tObj.LocIp = 67372036;
tObj.LocPort = 324;
tObj.LocPortRange = 5;
count = 1;
tArray.push(tObj) ;  

for (var i = 0; i <= count ;i++) {
    if( (tArray[i].TranslatedLocIpAddr == tGlobalIp)
     && (tArray[i].TranslatedLocPort == tGlobalPort) ) {
        alert("Existing t entry"); 
        return false;
    } 
}
Run Code Online (Sandbox Code Playgroud)

tArray[i].TranslatedLocIpAddr每次检索数组中的最后一个值时,我都验证了该值.

javascript

2
推荐指数
1
解决办法
86
查看次数

单元测试angular-bootstrap $ modal

我在尝试为Angular-Bootstrap编写茉莉花单元测试时遇到了问题$modal.确切的错误是 Expected spy open to have been called with [ { templateUrl : '/n/views/consent.html', controller : 'W2ConsentModal as w2modal', resolve : { employee : Function }, size : 'lg' } ] but actual calls were [ { templateUrl : '/n/views/consent.html', controller : 'W2ConsentModal as w2modal', resolve : { employee : Function }, size : 'lg' } ]

预期和实际的模态选项对象是相同的.到底是怎么回事?

调节器

(function () {
    'use strict';

    angular
        .module('app')
        .controller('W2History', W2History);

    W2History.$inject = ['$scope', '$modal', 'w2Service'];

    function W2History($scope, $modal, w2Service) { …
Run Code Online (Sandbox Code Playgroud)

javascript unit-testing jasmine angularjs angular-ui

2
推荐指数
1
解决办法
6244
查看次数

最快的方法是在不改变A的引用的情况下进行数组A =数组B.

我有一个数组A和一个生成数组的函数B

var A = ["test"];
var B = ["hello", "world"];
var C = A;
Run Code Online (Sandbox Code Playgroud)

如何使它A = B(包含所有且仅包含B中的值)而不更改其引用,因此C还包含B中的所有且仅包含的值.

javascript

2
推荐指数
1
解决办法
81
查看次数

Javascript如果只在函数外工作

我无法让我的javascript函数工作.

if (!cHp) { cHp = 200 };
Run Code Online (Sandbox Code Playgroud)

像魅力一样,但是

function checkNull(x, y) {
if (!x) { x = y; }
}
Run Code Online (Sandbox Code Playgroud)

根本不起作用.

我究竟做错了什么?

html javascript scripting

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