【问题标题】:How Can I Change Constant Array in Javascript?如何在 Javascript 中更改常量数组?
【发布时间】:2022-12-15 10:11:37
【问题描述】:

我有一个数组数据,但它是用 const 声明的。我很困惑更改数组中的数据。这是我的数组:

const person = {
   name: "Person A", ---> the data I want to change
   age: 100,
   favDrinks: [
     "coffee",
     "temulawak", --->> the data I want to change
     "tea"
       ],
 greeting: function() {
     console.log("Hello World"); --->> the data I want to change
   }
 }

如何更改 person.name、person.favDrinks[1] 的数据以及“Hello World”的问候功能。有没有可能改变常量数据的方法?我想更改为文本字符串。这是我的代码:

function personName(nama ){
  let person.name = nama;
    person.push("name:" nama );

}

console.log(personName("Molly"));

但他们都错了。请帮我。谢谢你。 :)

【问题讨论】:

    标签: javascript arrays object


    【解决方案1】:

    你做错了几件事。

    1. 您正在推入一个对象,而不是一个数组。
    2. 您正在函数中使用let 重新定义对象 person。
    3. 您可以更改常量对象的属性;但是,您不能重新分配它。
    4. 只需添加return person
      const person = {
        name: "Person A",
        age: 100,
        favDrinks: ["coffee", "temulawak", "tea"],
        greeting: function () {
          console.log("Hello World");
        },
      };
      
      function personName(nama) {
        person.name = nama;
        return person;
      }
      
      console.log(personName("Molly"));
      

      这是您在进行更改后将获得的内容:

      {
        name: 'Molly',
        age: 100,
        favDrinks: [ 'coffee', 'temulawak', 'tea' ],
        greeting: [Function: greeting]
      }
      

    【讨论】:

    • 好的,我会试试
    • 哦,我有下一个问题,你能做些什么来将带有符号的 person.name 数据(“Person A”)更改为 $NAME
    • 目前尚不清楚你在问什么。
    • 如果我变成:const person = { name: $NAME, age: 100, favDrinks: ["coffee", "temulawak", "tea"], greeting: function () { console.log("Hello World"); }, };是否有可能改变对象的价值?
    • 我不确定。如果您有新问题,请创建一个新问题并提问。另外,如果其中一个答案对您有帮助,请考虑接受并点赞。
    【解决方案2】:

    您正在使用 let 创建一个名称为 person.name 的变量,这是不可能的,然后将其推送给 person,在您的情况下,这不是您应该做的,而只是直接更改值。

    function personName(nama) {
        person.name = name
        return person
    }
    
    console.log(personName("Molly"));
    

    如果常量变量是字符串或数字,则无法更改。但如果它是一个数组或对象,则不能更改,但可以添加、删除或编辑对象或数组中的项目。

    【讨论】:

    • 您缺少返回值。
    • @Arcanu 对,谢谢提醒
    • function personGreeting(sentence){ person.greeting = function() { console.log(sentence); } 返回人; } console.log(personGreeting("你好莫莉"));它在控制台中返回 null。为什么?
    【解决方案3】:
    • person 是对象,不是数组。
    • 您可以更改常量对象的属性值。

    工作演示:

    const person = {
        name: "Person A",
      age: 100,
      favDrinks: [
        "coffee",
        "temulawak",
        "tea"
      ],
        greeting: function() {
        console.log("Hello World");
      }
     };
     
    person.name = "Person B";
    person.favDrinks[1] = "Soft Drinks";
    person.greeting = function() {
        console.log('Hello Guys!');
    }
    
    console.log('updated object', person);

    【讨论】:

      【解决方案4】:

      我在 scrimba 上关注“学习 javascript”,但遇到了一个奇怪的情况。

      我研究了 const cannot be reassigned 并且数组和对象中有一些方法可以在其中添加或删除元素,例如 arr.push()

          const s = [5, 7, 2];
          function editInPlace() {
          "use strict";
      
          s = [2, 5, 7];
      
         }
         editInPlace();
      

      enter image description here

      但神奇的是,当他们为 const 数组变量分配具有特定索引的新值时,它运行良好。

      const s = [5, 7, 2];
      function editInPlace() {
        "use strict";
      
        //s = [2, 5, 7];
        s[0] = 2;
        s[1] = 5;
        s[2] = 7;
      
      }
      editInPlace();
      
      console.log(s)
      

      enter image description here

      现在我不明白为什么会这样?我在这里问这个问题,因为人们在相同的背景下回答。

      期待您的来信。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-13
        • 1970-01-01
        • 2011-11-09
        • 1970-01-01
        • 2019-04-10
        相关资源
        最近更新 更多