2017-04-13 20 views
-1

我試圖在現有JavaScript對象中添加一條新消息initialData。可能也有先前的警告消息,但下面的代碼拋出的錯誤爲'SCRIPT5007:無法獲取未定義或空引用'屬性'推'。 定義爲initialData ['warnings'] ='';以下代碼之前的也沒有解決這個問題。Javascript推送帶有索引的數組中的新值

感謝慷慨的建議,我改變了代碼如下,但仍然得到錯誤「無法獲取的未定義或爲空引用屬性推」

**修改代碼**

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

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

*** **** Soultion

分配在陣列現有值和推在陣列的新值。之後將該數組分配給對象。

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

initialData.warning = warnings; 
+0

哇這麼多答案的一個問題,其他問題都沒有答案...偉大的! – Tejas

回答

0

請後味精取出支架: '這是一個重要的警示'

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

嘗試之一:

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

或者

initialData['warnings'] = { 
     title: ' Major Warning' 
     ,msg: 'This is a major warning' 
    }; 
2

有兩種主要的問題的UE,即要初始化爲空字符串,而不是一個空數組的第一個是:

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' 
}); 

附註:這是最好用點符號已知屬性和動態屬性

括號標記0
+0

更改了代碼並更新了問題,但仍然無效。 – Shatru

1

您需要初始化數組:

initialData.warnings = []; 

另外,作爲@Rob無效托架說。

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

在Javascript中,沒有與索引概念的數組。它被稱爲具有Key和Value對的對象。對象中不能使用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 
} 
1

的問題是在這條線:

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);

+0

不,推無法在對象上工作。推僅用於數組。不知何故需要找到方法爲對象動態添加值。 – Shatru

+0

你只是對陣列的作品而已。這就是爲什麼'warnings'被定義爲一個數組。但'initialData'應該是一個Object.Because只有對象在'initialData'的情況下可以具有像'warnings'這樣的屬性。 –