이런 배열이 있는데...
a["a"] = "aa"
a["b"] = "ab"
a["c"] = "ac"
a["d"]["a"] = "ada"
a["d"]["b"]["a"] = "adba"
a["e"]["a"]["a"]["a"] = "aeaaa"
...복제하고 싶습니다
clone(b, a)
지금까지 시도한 내용은 다음과 같습니다.
function clone(lhs, rhs){
for (i in rhs) {
if (typeof(arr[i]) == "array"){
clone(lhs[i], rhs[i])
} else {
lhs[i] = rhs[i]
}
}
}
b["d"]
그러나 이것은 할당되기 전에 생성되지 않았기 때문에 분명히 작동하지 않습니다 . 두 번째 질문은 로 입력해야 한다는 것입니다.a["d"]["a"]
b["d"]["a"]
b["d"]
array
답변1
복제하기 전에 하위 배열을 초기화해야 합니다.
function clone(lhs, rhs) {
for (i in rhs) {
if (isarray(rhs[i])) {
lhs[i][1] = ""
delete lhs[i][1]
clone(lhs[i], rhs[i])
} else {
lhs[i] = rhs[i]
}
}
}
매뉴얼 페이지에는 값을 쓴 다음 삭제하는 방법이 언급되어 있습니다 gawk
.
(저는 고정 배열 감지도 사용했습니다 isarray
.)