我有一个对象,x.我想把它复制为对象y,这样改变y就不要修改了x.我意识到复制从内置JavaScript对象派生的对象将导致额外的,不需要的属性.这不是问题,因为我正在复制我自己的一个文字构造的对象.
如何正确克隆JavaScript对象?
将JavaScript中的数组复制到另一个数组时:
var arr1 = ['a','b','c'];
var arr2 = arr1;
arr2.push('d'); //Now, arr1 = ['a','b','c','d']
Run Code Online (Sandbox Code Playgroud)
我意识到arr2引用相同的数组arr1,而不是一个新的独立数组.如何复制数组以获得两个独立的数组?
Array.prototype.reverse 反转数组的内容(带有变异)......
是否有一个类似的简单策略来反转数组而不改变原始数组的内容(没有变异)?
我想知道旋转JavaScript数组的最有效方法是什么.
我想出了这个解决方案,其中正向n旋转数组向右旋转,负向左旋转n(-length < n < length):
Array.prototype.rotateRight = function( n ) {
this.unshift( this.splice( n, this.length ) )
}
Run Code Online (Sandbox Code Playgroud)
然后可以这样使用:
var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
months.rotate( new Date().getMonth() )
Run Code Online (Sandbox Code Playgroud)
我上面的原始版本有一个缺陷,正如Christoph在下面的评论中指出的那样,正确的版本是(额外的返回允许链接):
Array.prototype.rotateRight = function( n ) {
this.unshift.apply( this, this.splice( n, this.length ) )
return this;
}
Run Code Online (Sandbox Code Playgroud)
是否有更紧凑和/或更快的解决方案,可能在JavaScript框架的上下文中?(以下提出的版本都没有更紧凑或更快)
是否有任何JavaScript框架,内置数组旋转?(还没有人回答)
我有一个输入的对象数组.让我们来称呼它content.
尝试深度复制时,它仍然具有对前一个数组的引用.
我需要复制该输入数组,并更改重复部分的一个属性.
很久以来我尝试了不成功的不同方法.
ES6方式:
public duplicateArray() {
arr = [...this.content]
arr.map((x) => {x.status = DEFAULT});
return this.content.concat(arr);
}
Run Code Online (Sandbox Code Playgroud)
该slice方式:
public duplicateArray() {
arr = this.content.slice(0);
arr.map((x) => {x.status = DEFAULT});
return this.content.concat(arr);
}
Run Code Online (Sandbox Code Playgroud)
在这两个数组中,所有对象都有status: 'Default'.
在Angular 2中深度复制数组的最佳方法是什么?
如何将数组的每个元素(元素都是对象)复制到另一个数组中,以便它们完全独立?我不想更改一个数组中的元素来影响另一个元素.
我有一个阵列,我想分成两半.所以我可以将前半部分放在右侧,将后半部分放在左侧.
我之前使用过拼接功能:
var leftSide = arrayName.splice(0,2);
Run Code Online (Sandbox Code Playgroud)
但不确定无论大小如何将其拼接成一半,因为数组的大小会动态变化.
如何在不改变数组的情况下完成以下操作:
let array = ['item1'];
console.log(array); // ['item1']
array[2] = 'item2'; // array is mutated
console.log(array); // ['item1', undefined, 'item2']
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,array变量是变异的.如何在不改变阵列的情况下执行相同的操作?
我不知道为什么我的计算机属性错误会产生意外的副作用,如下所示.
错误:
? https://google.com/#q=vue%2Fno-side-effects-in-computed-properties Unexpected side effect in "orderMyReposByStars" computed property
src/components/HelloWorld.vue:84:14
return this.myRepos.sort((a, b) => a.stargazers_count < b.stargazers_count)
Run Code Online (Sandbox Code Playgroud)
HTML:
<div v-if="myRepos && myRepos.length > 0">
<h3>My Repos</h3>
<ul>
<li v-for="repo in orderMyReposByStars" v-bind:key="repo.id">
<div class="repo">
{{repo.name}}
<div class="pull-right">
<i class="fas fa-star"></i>
<span class="bold">{{repo.stargazers_count}}</span>
</div>
</div>
</li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
JS:
export default {
name: 'HelloWorld',
data () {
return {
myRepos: null, <-- THIS IS ULTIMATELY AN ARRAY OF OBJECTS
}
},
computed: {
orderMyReposByStars: function () {
return this.myRepos.sort((a, …Run Code Online (Sandbox Code Playgroud) 例如:
var Array1=array(1,2,3,4,5,6);
var Array2=array(7,8,9,10,11,12);
Run Code Online (Sandbox Code Playgroud)
Array2用Array1值替换之后应该得到结果数组
var Array1=array(7,8,9,10,11,12);
Run Code Online (Sandbox Code Playgroud) javascript ×9
arrays ×6
angular ×1
clone ×1
deep-copy ×1
ecmascript-6 ×1
immutability ×1
rotation ×1
typescript ×1
vue.js ×1
vuejs2 ×1