有什么方便的方法可以替换数组的内容并对其进行引用?我不想这样替换数组:
var arr1 = [1,2,3];
var referenceToArr1 = arr1;
var arr2 = [4,5,6];
arr1 = arr2;
// logs: [4,5,6] false
console.log(arr1, arr1===referenceToArr1);
// logs [1,2,3]
console.log(referenceToArr1);
这种方法arr1
具有的内容arr2
,但是我松了其中的引用referenceToArr1
,因为它仍然指向 原始内容 arr1
。
这样,我就不会失去参考:
var arr1 = [1,2,3];
var referenceToArr1 = arr1;
var arr2 = [4,5,6];
arr1.length = 0;
for (var i = 0; i < arr2.length; i++) {
arr1.push(arr2[i]);
}
// logs: [4,5,6] true
console.log(arr1, arr1===referenceToArr1);
// logs: [4,5,6]
console.log(referenceToArr1)
这里的缺点是,我必须清空arr1.length = 0
,迭代其中的每个元素arr2
并arr1
用手将其推入。
我的问题是:
背景:
我有一个带有服务的AngularJS应用。在此服务内部,我有一个数组来保持从服务器加载的所有元素。来自服务的数据get绑定到控制器,并在视图中使用。当服务中的数据发生更改(例如发生重新提取)时,我想自动更新控制器变量和绑定到的视图。
这是一个柱塞: http
://plnkr.co/edit/8yYahwDO6pAuwl6lcpAS?p=preview
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope, myService) {
$scope.name = 'World';
myService.fetchData().then(function(data) {
console.log(data)
$scope.data = data;
})
});
app.service('myService', function($timeout, $q) {
var arr;
var deferred;
var loadData = function() {
// here comes some data from the server
var serverData = [1,2,3];
arr = serverData;
deferred.resolve(arr);
// simulate a refetch of the data
$timeout(function() {
var newServerData = [4,5,6];
// this won't work, because MainCtrl looses it's reference
// arr = newServerData;
}, 1000);
$timeout(function() {
var newServerData = [7,8,9];
arr.length = 0;
[].push.apply(arr, newServerData);
}, 2000);
$timeout(function() {
var newServerData = [10,11,12];
[].splice.apply(arr, [0, arr.length].concat(newServerData));
}, 3000);
}
return {
fetchData: function() {
deferred = $q.defer();
loadData();
return deferred.promise;
}
}
})
和视图:
<!DOCTYPE html>
<html ng-app="plunker">
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>document.write('<base href="' + document.location + '" />');</script>
<link rel="stylesheet" href="style.css" />
<script data-require="angular.js@1.2.x" src="https://code.angularjs.org/1.2.16/angular.js" data-semver="1.2.16"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
<ul>
<li ng-repeat="d in data">{{d}}</li>
</ul>
3 refetches every second
</body>
</html>
那这个呢:
// 1. reset the array while keeping its reference
arr1.length = 0;
// 2. fill the first array with items from the second
[].push.apply(arr1, arr2);
问题内容: 我对jQuery一无所知,但想实现一些非常重要的事情。 我想要一个按钮/链接来替换div内容,如果再次按下该按钮,它将把原始内容放回原处。 问题答案: 这是一种方法: HTML: jQuery:
HttpServletResponse提供了如下简便方法: sendRedirect sendError * sendRedirect 方法将设置适当的头和内容体将客户端重定向到另一个地址。使用相对 URL 路径调用该方法是合法的,但是底层的容器必须将传回到客户端的相对地址转换为全路径 URL。无论出于什么原因,如果给定的URL是不完整的,且不能转换为一个有效的URL,那么该方法必须抛出Illeg
我试图用HttpResponseMessage返回一个错误消息,但我得到的是我假定的< code>StringContent。ToString()。这是我的代码: 错误状态代码类似于401、404等。消息是纯文本的,如“照片未找到”或“错误的参数”。我的期望是,当出现错误时,用状态代码(401等)进行响应。)和一条纯文本错误消息。我收到的是HTML格式的响应,状态代码为200,内容如下: Stat
问题内容: 如何在iText中完成此操作?我有一个带有客户签名的PDF。我需要向未签名的属性添加ocsp响应。 我知道如何使用 但我不知道如何使用替换PDF 。如果我使用此代码: 包含签名的字典在哪里,则签名(在Adobe Reader中打开文档时)被破坏。 问题答案: 当iText 在正常模式下操作文档时,它可以(并且经常)重新排列现有的PDF对象。显然,这破坏了任何现有集成签名的哈希值。此外,
本文向大家介绍JS正则替换掉小括号及内容的方法,包括了JS正则替换掉小括号及内容的方法的使用技巧和注意事项,需要的朋友参考一下 正则表达式:\ ( [ ^ \ ) ] * \ ) JS代码: 以上这篇JS正则替换掉小括号及内容的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持呐喊教程。
问题内容: java数组没有toString方法,如何使用简单的方法输出数组内容? 问题答案: 从Java 5开始,你可以将Arrays.toString(arr)或Arrays.deepToString(arr)用于数组中的数组。 请注意,Object[]版本会调用.toString()数组中的每个对象。输出甚至按照您的要求进行修饰。 例子: 简单数组: 输出: 嵌套数组: 输出: double