development

jQuery에서 배열을 복제하는 방법이 있습니까?

big-blog 2020. 12. 6. 21:49
반응형

jQuery에서 배열을 복제하는 방법이 있습니까?


이것은 내 코드입니다.

var a=[1,2,3]
b=$.clone(a)
alert(b)

jQuery에는 'clone'메소드가 없습니까? jQuery를 사용하여 배열을 복제하려면 어떻게해야합니까?


사용하십시오 Array.prototype.slice.

a = [1];
b = a.slice();

JSFiddle- http: //jsfiddle.net/neoswf/ebuk5/


jQuery.merge어떻 습니까?

copy = $.merge([], a);

이것이 내가 한 방법입니다.

var newArray = JSON.parse(JSON.stringify(orgArray));

이렇게하면 첫 번째 복사본과 관련이없는 새로운 깊은 복사본이 생성됩니다 (얕은 복사본이 아님).

또한 이것은 분명히 이벤트와 함수를 복제하지 않을 것이지만 한 줄로 할 수있는 좋은 일이며 모든 킹 오브 객체 (배열, 문자열, 숫자, 객체 ...)에 사용할 수 있습니다.


변화

b = $. clone (a) to b = $ (this) .clone (a) 하지만 언젠가는 작동하지 않습니다

그러나보고된다

http://www.fusioncube.net/index.php/jquery-clone-bug-in-internet-explorer

자바 스크립트의 간단한 내장 복제 기능을 사용하는 솔루션

var a=[1,2,3];
b=clone(a);
alert(b);

function clone(obj){
    if(obj == null || typeof(obj) != 'object')
        return obj;
    var temp = obj.constructor();
    for(var key in obj)
        temp[key] = clone(obj[key]);
    return temp;
}

-ConroyP

훌륭한 대안은

 // Shallow copy
  var b = jQuery.extend({}, a);

  // Deep copy
  var b = jQuery.extend(true, {}, a);

-존 레시 그

유사한 게시물 확인


또 다른 옵션은 Array.concat을 사용하는 것입니다.

var a=[1,2,3]
var b=[].concat(a);

시험

if (!Array.prototype.clone) {
    Array.prototype.clone = function () {
        var arr1 = new Array();
        for (var property in this) {
            arr1[property] = typeof (this[property]) == 'object' ? this[property].clone() : this[property]
        }
        return arr1;
    }​
}

로 사용

var a = [1, 2, 3]
b = a;
a.push(4)
alert(b); // alerts [1,2,3,4]
//---------------///
var a = [1, 2, 3]
b = a.clone();
a.push(4)
alert(b); // alerts [1,2,3]​

var a=[1,2,3]
b=JSON.parse(JSON.stringify(a));
document.getElementById("demo").innerHTML = b;
<p id="demo"></p>


ES6 스프레드를 사용하십시오

let arrayCopy = [...myArray];

참고 URL : https://stackoverflow.com/questions/3775480/is-there-a-method-to-clone-an-array-in-jquery

반응형