PHP $$ var에 해당하는 JS는 무엇입니까?

이브

동적 필드가있는 양식이 있습니다. 제출하기 전에 직렬화 된 데이터의 형식을 지정하고 싶습니다. Javascript에서 PHP $$ var를 재현해야합니다.

다음은 PHP의 아이디어입니다.

나는 이것을 가지고있다 :

$data = array('field1', 0, 'key');
$val = 'somevalue';

그리고 나는 이것을 원한다 :

$field1[0]['key'] = 'somevalue';

그래서, 내가 PHP에 있었다면 어떻게 진행할 것인지는 다음과 같습니다 (작동하는지 확실하지 않습니다) :

$data = array('field1', 0, 'key');
$val = 'somevalue';

$field1 = array();
$f = $data[0];           # 'field1'
$i = $data[1];           # 0
$k = $data[2];           # 'key'
$$f[$i][$k] = $val;      # $field1[0]['key'] = 'somevalue';

나는 우리가 window[var]JS에서 사용할 수 있다는 것을 보았지만 그것을 작동하도록 관리하지 못했습니다.

var val = 'somevalue';
var field1 = [];
var f = data[0];
var i = data[1];
var k = data[2];

window[f][i] = {};           # field1[0] must be an object
window[f][i][k] = val;       # field1[0] = {'key': 'somevalue'}

보시다시피 매우 간단하지 않습니다. 게다가이 코드는 하나의 필드가 아니라 많은 (field2, field3 ...)이기 때문에 foreach 내에 있습니다.

마지막에는 다음과 같은 것이 있습니다.

var result = {
  field1: field1,
  field2: field2,
  ...
  field10: field10
}

// console.log(result);
{
  field1: [
    0 : Object { key: 'somevalue', key2: 'othervalue' }
    ...
    5 : Object { key: 'somevalue2', key2: 'othervalue2' }
  ]
  field2: [...]
  ...
}

편집하다:

@Nina Scholz의 답변에 감사드립니다.

function formatData(object, keys, value) {
    var last = keys.pop();

    keys.reduce((o, k, i, a) =>
        o[k] = o[k] || (isFinite(i + 1 in a ? a[i + 1] : last) ? [] : {}),
        object
    )[last] = value;

    return object;
}

var data = form.serializeArray();
var result = {};

$(data).each(function(i) {
    name = data[i].name;        // field name. Ex: "field1[0][key]"
    value = data[i].value;      // field value

    // Format: "field1[0][key]" => array("field1", "0", "key")
    array = name.split('[');
    array[1] = array[1].replace(']', '');
    array[2] = array[2].replace(']', '');

    // Format every array of data in a big object "result"
    formatData(result, array, value);
});

// JSON encoding of "result" in a hidden field for post-treatment
$('input[name=data]').val(JSON.stringify(result));
니나 숄츠

개체를 직접 가져와 설정 값으로 이동할 수 있습니다. 이 접근 방식은 기본값으로 배열의 숫자 인 경우 키를 확인합니다. 배열이나 객체가 주어지면 데이터 구조를 변경하지 않습니다.

function setValue(object, keys, value) {
    var last = keys.pop();

    keys.reduce((o, k, i, a) =>
        o[k] = o[k] || (isFinite(i + 1 in a ? a[i + 1] : last) ? [] : {}),
        object
    )[last] = value;

    return object;
}

var val = 'somevalue',
    data = ['field1', 0, 'key'],
    result = {};

setValue(result, data, val);
console.log(result);

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

@row : = @ row + 1에 해당하는 PHP는 무엇입니까?

분류에서Dev

PHP에서 openssl_public_encrypt에 해당하는 Android는 무엇입니까?

분류에서Dev

php file_get_contents ( "php : // input")에 해당하는 python은 무엇입니까?

분류에서Dev

Java System.out.println에 해당하는 PHP는 무엇입니까?

분류에서Dev

Javascript의 "var x = y || z"에 해당하는 SASS는 무엇입니까?

분류에서Dev

암호로 보호 된 키가있는 PHP의 openssl_open에 해당하는 Java는 무엇입니까?

분류에서Dev

PHP 및 CURL을 통해 Mailgun을 사용할 때 PHPMailer의 AddStringAttachment에 해당하는 것은 무엇입니까?

분류에서Dev

jQuery / JavaScript에서이 쿠키 코드에 해당하는 PHP는 무엇입니까?

분류에서Dev

PHP에서 분해 값을 사용하여 배열 변수를 할당하는 방법은 무엇입니까?

분류에서Dev

C ++에서 #define에 해당하는 Ada는 무엇입니까?

분류에서Dev

Linux에서 envsubst에 해당하는 Windows는 무엇입니까?

분류에서Dev

PHP / CodeIgniter에서 ASP.NET의 [Authorize]에 해당하는 것은 무엇입니까?

분류에서Dev

Express-Handlebars 섹션에 해당하는 Vue.js는 무엇입니까?

분류에서Dev

Node.js Buffer.from (string)에 해당하는 Deno는 무엇입니까?

분류에서Dev

이 Curl POST 명령에 해당하는 Angular JS는 무엇입니까?

분류에서Dev

Windows shell : startup에 해당하는 Ubuntu는 무엇입니까?

분류에서Dev

WinForms Activated Event에 해당하는 PyQt는 무엇입니까?

분류에서Dev

random.sample에 해당하는 numpy는 무엇입니까?

분류에서Dev

C ++ std :: flush에 해당하는 JavaScript는 무엇입니까?

분류에서Dev

`--context`에 해당하는 Kubernetes API는 무엇입니까?

분류에서Dev

std :: optional nullopt에 해당하는 boost는 무엇입니까?

분류에서Dev

이 KOTLIN 코드에 해당하는 Java는 무엇입니까?

분류에서Dev

ksh88에 해당하는 코드는 무엇입니까?

분류에서Dev

Windows shell : startup에 해당하는 Ubuntu는 무엇입니까?

분류에서Dev

C : \ Program Files에 해당하는 Linux는 무엇입니까?

분류에서Dev

Linux VPS에 해당하는 Windows 단어는 무엇입니까?

분류에서Dev

bash의 export -f에 해당하는 zsh는 무엇입니까?

분류에서Dev

'expr'에 해당하는 ZSH는 무엇입니까?

분류에서Dev

"cmd / c"에 해당하는 Bash는 무엇입니까?

Related 관련 기사

  1. 1

    @row : = @ row + 1에 해당하는 PHP는 무엇입니까?

  2. 2

    PHP에서 openssl_public_encrypt에 해당하는 Android는 무엇입니까?

  3. 3

    php file_get_contents ( "php : // input")에 해당하는 python은 무엇입니까?

  4. 4

    Java System.out.println에 해당하는 PHP는 무엇입니까?

  5. 5

    Javascript의 "var x = y || z"에 해당하는 SASS는 무엇입니까?

  6. 6

    암호로 보호 된 키가있는 PHP의 openssl_open에 해당하는 Java는 무엇입니까?

  7. 7

    PHP 및 CURL을 통해 Mailgun을 사용할 때 PHPMailer의 AddStringAttachment에 해당하는 것은 무엇입니까?

  8. 8

    jQuery / JavaScript에서이 쿠키 코드에 해당하는 PHP는 무엇입니까?

  9. 9

    PHP에서 분해 값을 사용하여 배열 변수를 할당하는 방법은 무엇입니까?

  10. 10

    C ++에서 #define에 해당하는 Ada는 무엇입니까?

  11. 11

    Linux에서 envsubst에 해당하는 Windows는 무엇입니까?

  12. 12

    PHP / CodeIgniter에서 ASP.NET의 [Authorize]에 해당하는 것은 무엇입니까?

  13. 13

    Express-Handlebars 섹션에 해당하는 Vue.js는 무엇입니까?

  14. 14

    Node.js Buffer.from (string)에 해당하는 Deno는 무엇입니까?

  15. 15

    이 Curl POST 명령에 해당하는 Angular JS는 무엇입니까?

  16. 16

    Windows shell : startup에 해당하는 Ubuntu는 무엇입니까?

  17. 17

    WinForms Activated Event에 해당하는 PyQt는 무엇입니까?

  18. 18

    random.sample에 해당하는 numpy는 무엇입니까?

  19. 19

    C ++ std :: flush에 해당하는 JavaScript는 무엇입니까?

  20. 20

    `--context`에 해당하는 Kubernetes API는 무엇입니까?

  21. 21

    std :: optional nullopt에 해당하는 boost는 무엇입니까?

  22. 22

    이 KOTLIN 코드에 해당하는 Java는 무엇입니까?

  23. 23

    ksh88에 해당하는 코드는 무엇입니까?

  24. 24

    Windows shell : startup에 해당하는 Ubuntu는 무엇입니까?

  25. 25

    C : \ Program Files에 해당하는 Linux는 무엇입니까?

  26. 26

    Linux VPS에 해당하는 Windows 단어는 무엇입니까?

  27. 27

    bash의 export -f에 해당하는 zsh는 무엇입니까?

  28. 28

    'expr'에 해당하는 ZSH는 무엇입니까?

  29. 29

    "cmd / c"에 해당하는 Bash는 무엇입니까?

뜨겁다태그

보관