javascript
2016-04-25 37 views -7 likes 
-7

你好傢伙我試圖在JavaScript中創建一個數組,就像我可以在PHP中創建的一樣。在PHP中,我可以創建一個這樣的數組,然後插入任何我喜歡的索引JavaScript中的數組像php

$p = array(); 
$p["abcd"] = "James"; 

現在我想在js中使用這個功能。是否有可能做到這一點的JS

我做了這樣的事情,但這是拋出了我一個錯誤

$.each($('table[data-step-id=' + step_id +'] input[name^=actions]') , function(key , value){ 
    debugger; 
    steps_actions_dates_assign[key]["action"].push(value.val()); 
}); 

這是錯誤 Uncaught TypeError: Cannot set property 'action' of undefined

我的問題是不是重複

我不想嘗試在javascript中訪問php數組,但我試圖在javascript中創建一個像php這樣的數組(我們不需要擔心索引以同樣的方式,我應該能夠補充我想任何索引)

這是全部代碼

var steps_actions_dates_assign = new Array(); 

$.each($('.steps-table') , function (key , value){ 
    debugger; 
    step_id = value.children[0].value; 
    steps_actions_dates_assign[key]["action"] = new Array(); 
    $.each($('table[data-step-id=' + step_id +'] input[name^=actions]') , function(key , value){ 
     debugger; 
     steps_actions_dates_assign[key]["action"].push(value.val()); 
    }); 
}); 
+1

誰投下了我的問題的人可以請她解釋爲什麼這個問題downvoted ?? –

+3

@J Doe,這個基本你可以從書本身上得到,試着靠自己先傾向然後問 – JiteshNK

+1

剛剛看過你的編輯,這是一個全新的問題。你認爲'steps_actions_dates_assign [key]'是一個對象:它不是。使用你的調試器來找出它是什麼。 –

回答

4

JavaScript數組是專爲數字指標和保持有序的數據。

使用對象來存儲具有任意名稱的屬性。

var p = {}; 
p["abcd"] = "James"; 

在JS,陣列是一種對象,因此它是可能到任意屬性在其上存儲,但是當試圖遍歷陣列之上或把它傳遞給這樣的功能你會遇到的問題作爲JSON.stringify

如果您使用ES6而不是Maps是另一種選擇。

+0

哼,我忘記了地圖。根據[MDN](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map/entries),他們記錄了插入順序,因此在某些情況下它們可能是替代方案。 –

+1

@JDoe - 這幾乎是一個全新的問題,無論如何它都無法對它的當前狀態負責。你不會告訴我們什麼'steps_actions_dates_assign'是什麼,或者你爲什麼期望'steps_actions_dates_assign [key]'被定義。 – Quentin

+0

我已經添加了所有的代碼。 –

相關問題