循环遍历数组,并将子JSON转换为observablearray?

时间:2017-11-29 15:16:46

标签: javascript arrays json knockout.js

这可能是一个众所周知的问题,可能已经在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([]);
    }

2 个答案:

答案 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