簡體   English   中英

Javascript用索引將​​新值推入數組

[英]Javascript Push new value in array with indexs

我正在嘗試在現有的javascript對象initialData中添加新消息。 可能也有先前的警告消息,但是下面的代碼將錯誤拋出為“ SCRIPT5007:無法獲取未定義或空引用的屬性” push”。 定義為initialData ['warnings'] =''; 在此之前,下面的代碼也無法解決此問題。

感謝您的慷慨建議,我更改了以下代碼,但仍收到錯誤“無法獲得未定義或空引用的屬性推送”

**修改代碼**

var initialData = false;
initialData.warnings = [];
initialData.warnings.push({
                        title: ' Major Warning'
                        ,msg:  'This is a major warning'
        });

有人可以指出該問題以及如何解決。

***靈魂****

在數組中分配現有值,然后在數組中推送新值。 之后,將數組分配給對象。

var warnings = [] ;
warnings = initialData.warning;
warnings.push({
                        title: ' Major Warning'
                        ,msg:  'This is a major warning'
        });

initialData.warning = warnings;

有兩個主要問題,第一個是要初始化為空字符串而不是空數組:

initialData.warnings = [];

然后,您遇到了@Rohit指出的語法錯誤:

initialData.warnings.push({
    title: ' Major Warning'
   ,msg:  'This is a major warning'] <--- INVALID BRACKET
});

卸下支架,它應該可以正常工作:

initialData.warnings.push({
    title: ' Major Warning'
   ,msg:  'This is a major warning'
});

旁注:最好將點符號用於已知屬性,將括號符號用於動態屬性

您需要初始化數組:

initialData.warnings = [];

也正如@Rob所說的無效括號。

initialData.warnings.push({
    title: ' Major Warning'
   ,msg:  'This is a major warning'] <--- INVALID BRACKET
});

在Javascript中,沒有帶有索引的數組概念。 它被稱為具有鍵和值對的對象。 您不能在對象中使用push方法。

var obj={a:"A"}; // this is javascript object act like index array
obj.b= "B"; // first method
obj['c']= "C"; // second method
console.log(obj);

//iterate values and keys from javascript object
for(var i in obj){
    console.log(i); // console key
    console.log(obj[i]); // console value of key
}

問題在這一行:

var initialData = false;

此定義使initialDataboolean數據類型。 它應該是Object數據類型,以將warnings作為其屬性。 因此,定義應將其定義為這樣的對象:

var initialData = {};

完整代碼:

 var initialData = {}; initialData.warnings = []; initialData.warnings.push({ title: ' Major Warning' ,msg: 'This is a major warning' }); console.log(initialData); 

請在msg之后刪除括號:“這是一個重要警告”

initialData['warnings'].push({
                        title: ' Major Warning'
                        ,msg:  'This is a major warning'
        });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM