簡體   English   中英

JSON數組錯誤無法設置未定義的屬性'模型'

[英]Json array error Cannot set property 'model' of undefined

var temp = [{}]
var as = ['a', 'b']
for (i = 0; i < as.length; i++) {
    temp[i].model = as[i]
}

我收到以下錯誤:

無法設置未定義的屬性“模型”

好的,這應該為您解決問題:

var temp = [];
var as = ['a', 'b'];
for (i = 0; i < as.length; i++) {
    temp[i] = temp[i] || {};
    temp[i].model = as[i];
}

因為as可以比temp ,所以您需要確保temp[i]存在,這正是temp[i] = temp[i] || {}; temp[i] = temp[i] || {}; 確實:

  • 如果temp[i]存在,則不執行任何操作。
  • 如果temp[i]不存在,它分配一個新的空對象( {}temp[i]

注意,我從temp = [{}] -> temp = []刪除了{} 您現在不需要那里的第一個空對象。


如果您絕對確定temp在循環之前絕不包含任何值,則可以改為執行以下操作:

for (i = 0; i < as.length; i++) {
    temp[i] = { model: as[i] };
}

要么:

temp = as.map(function(item){ return { model: item }});

temp長度為1, as長度as 2。因此, temp[1]未定義。

我認為這可以更好地傳達代碼的意圖,並且是正確的:

var temp = [];
var as = ['a', 'b'];

for (var i = 0; i < as.length; i++) {
    temp[i] = {model: as[i]};
}

要始終保持足夠的temp值,您可以預先填充它:

var as = ['a', 'b'];
var temp = as.map(function() { return {}; });
for (i = 0; i < as.length; i++) {
    temp[i].model = as[i]
}

嘗試這個

var temp = [];
var as = ['a', 'b']
for (i = 0; i < as.length; i++) {
    temp.push({'model':as[i]});
}
console.log(temp);

小提琴

這很簡單。

請在下面將其用於您的問題。

> var temp =[[]]; var as = ['a','b'] for(i=0;i<as.length;i++){  
> temp.push({model : as[i]}) }
> 
> console.log(temp)

讓我知道你是否有任何澄清

暫無
暫無

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

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