Rumah  >  Soal Jawab  >  teks badan

ReactJs: Tatasusunan induk saya dikemas kini selepas menggunakan fungsi peta

Saya cuba memasukkan kunci baharu ke dalam tatasusunan yang pada asasnya diekstrak daripada tatasusunan induk. Saya tidak dapat mencari sebab mengapa tatasusunan utama dalam kedai akan berubah hanya dengan memasukkan kunci baharu ke dalam tatasusunan yang diekstrak.

Ini adalah cara saya cuba menambah pasangan nilai kunci baharu dalam tatasusunan tersuai

const array = [{"integrationTypeId":1,"type":"aptus","fields":[{"name":"base_url"},{"name":"hash_key"}]}]

function runArray(){
let connectorObject= {}
let newArray
if (array.length > 0) {
                connectorObject =
                    array.find(
                        (c) => c.integrationTypeId === 1,
                    );
                newArray = connectorObject.fields
                newArray !== undefined &&
                    newArray.map((object) => {
                        return Object.assign(object, {
                            inputType: "textField",
                            value: object.name,
                        })
                    })
            }
            console.log(JSON.stringify(newArray))
            console.log(JSON.stringify(array))
}

runArray();

Berikut ialah output:

Konsol 1.: newArray

[{"name":"base_url","inputType":"textField","value":"base_url"},{"name":"hash_key","inputType":"textField","value":"hash_key"}]

Konsol 2.: Susunan Ibu Bapa

[{"integrationTypeId":1,"type":"aptus","fields":[{"name":"base_url","inputType":"textField","value":"base_url"},{"name":"hash_key","inputType":"textField","value":"hash_key"}]}]

Apa yang menjadikannya diubah suai dengan nilai newArray.

Malah mencuba: newArray.map(obj => ({ ...obj, [inputType]: "textField"}));

P粉208286791P粉208286791221 hari yang lalu456

membalas semua(1)saya akan balas

  • P粉141455512

    P粉1414555122024-04-04 15:32:25

    Adalah penting untuk mengetahui bahawa tatasusunan dan objek Javascript dihantar melalui rujukan. Ini bermakna jika anda mengubah suai tatasusunan atau objek, ia akan ditunjukkan dalam semua rujukan kepada tatasusunan atau objek itu.

    Dalam kes ini, Array-->Object-->Array-->Object terlalu bersarang. Jadi pastikan anda membuat tatasusunan atau objek baharu semasa mengekstrak. Di sini saya menggunakan ES6 ... 语法来创建一个新的数组/对象。只需使用 = untuk menyalin rujukan dan mencerminkan perubahan.

    Kod di bawah belum dioptimumkan lagi, tetapi saya harap anda mendapat idea itu.

    const array = [
      {
        integrationTypeId: 1,
        type: "aptus",
        fields: [{ name: "base_url" }, { name: "hash_key" }],
      },
    ];
    
    function runArray() {
      let connectorObject = {};
      let newArray = [];
    
      if (array.length > 0) {
        connectorObject = {
          ...array.find((c) => c.integrationTypeId === 1), //Creating brand new copy of array object
          fields: [...array.find((c) => c.integrationTypeId === 1).fields], //Creating brand new copy of fields array
        };
    
        newArray = connectorObject.fields.map((field) => {  //Creating brand new copy of fields array object
          return { ...field };
        });
    
        newArray.map((object) => {
          Object.assign(object, {
            inputType: "textField",
            value: object.name,
          });
        });
      }
      console.log(JSON.stringify(newArray));
      console.log(JSON.stringify(array));
    }
    
    runArray();

    balas
    0
  • Batalbalas