这可能是一个众所周知的问题,可能已经在Stack Overflow中解决了,但是我没有运气就进行了搜索。
我有一个由JSON字符串组成的数组。我试图遍历数组,并将JSON转换为observablearray,以便我可以访问属性" value"," name"," price&#34 ;所以我可以在Knockout上使用它。
带有JSON的数组:
0
:
"{"value":"382","name":"Entrecoté med poteter og sånt..","price":295.0}"
1
:
"{"value":"385","name":"Svinekoteletter","price":295.0}"
2
:
"{"value":"386","name":"Pizza Margherita","price":255.0}"
初始循环:
completeArray.forEach(function(c) {
// convert the json string to an observableArray ??
});
如果其他人来找到解决方法,我会在下面提供完整的示例:
self.addFoodItemsToSubMenu = function (item) {
var existingFIS = JSON.parse(ko.toJSON(item.foodItemList()));
var newFIS = JSON.parse(ko.toJSON(self.selectedFoodItems()));
var completeFIS = existingFIS.concat(newFIS);
var resultArray = ko.observableArray(completeFIS.map(function (item) {
var parsedResult = JSON.parse(item);
var resultObject = {
value: parsedResult.value,
name: parsedResult.name,
price: ko.observable(parsedResult.price)
}
return resultObject;
}));
item.foodItemList(resultArray());
self.selectedFoodItems([]);
}
答案 0 :(得分:3)
如果我理解你的话:
var resultArray = ko.observableArray(completeArray.map(function(item) {
return JSON.parse(item);
}));
答案 1 :(得分:0)
我会使用map,因为它将循环遍历数组中的每个项目,转换它并将其吐出来:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map