我将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)
谢谢您的帮助
我正在制作一个有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模块模式:
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: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) 我有一个包含公共和私有变量的对象.公共变量被分配给私有变量(我认为),但是,每当我使用函数修改私有变量时,公共变量都不会更新.
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;有效,但它不会更新私有变量.我想同时更新私有变量和公共变量.这可能吗?
你知道这是为什么吗
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)
不是吗?
这可能是一个愚蠢的小错误,但我真的不知道它可能在哪里。
谢谢
我有数组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每次检索数组中的最后一个值时,我都验证了该值.
我在尝试为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) 我有一个数组A和一个生成数组的函数B
var A = ["test"];
var B = ["hello", "world"];
var C = A;
Run Code Online (Sandbox Code Playgroud)
如何使它A = B(包含所有且仅包含B中的值)而不更改其引用,因此C还包含B中的所有且仅包含的值.
我无法让我的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)
根本不起作用.
我究竟做错了什么?
javascript ×10
closures ×2
angular-ui ×1
angularjs ×1
element ×1
get ×1
html ×1
jasmine ×1
jquery ×1
private ×1
properties ×1
public ×1
scope ×1
scripting ×1
unit-testing ×1
variables ×1