Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环遍历数组,并将子JSON转换为observablearray?_Javascript_Arrays_Json_Knockout.js - Fatal编程技术网

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

Javascript 循环遍历数组,并将子JSON转换为observablearray?,javascript,arrays,json,knockout.js,Javascript,Arrays,Json,Knockout.js,这可能是一个非常有名的问题,可能已经在堆栈溢出中解决了,但我一直在搜索,没有任何运气 我有一个由JSON字符串组成的数组。我试图循环遍历数组,并将JSON转换为observablearray,这样我就可以访问属性“value”、“name”、“price”,这样我就可以将它与Knockout一起使用 带有JSON的数组: 0 : "{"value":"382","name":"Entrecoté med poteter og sånt..","price":295.0}" 1 : "{"valu

这可能是一个非常有名的问题,可能已经在堆栈溢出中解决了,但我一直在搜索,没有任何运气

我有一个由JSON字符串组成的数组。我试图循环遍历数组,并将JSON转换为observablearray,这样我就可以访问属性“value”、“name”、“price”,这样我就可以将它与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 ??
        });
初始循环:

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([]);
    }

如果我没看错你的话:

var resultArray = ko.observableArray(completeArray.map(function(item) {
    return JSON.parse(item);
}));

如果我没看错你的话:

var resultArray = ko.observableArray(completeArray.map(function(item) {
    return JSON.parse(item);
}));

我会使用map,因为它将循环遍历数组中的每个项目,对其进行变换,然后将其吐出:


我会使用map,因为它会循环遍历数组中的每个项目,对其进行变换,然后将其吐出:


虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面更改,只有链接的答案可能会无效。我会检查一下:)感谢您的快速评论!虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面更改,只有链接的答案可能会无效。我会检查一下:)感谢您的快速评论!我知道这确实是想要的结果!。。但必须使“价格”属性成为可观察的。。因为它将被编辑。。知道我怎么做吗?好的。。你的方法解开了这个谜。。我已经用完整的函数更新了问题,以防有人过来寻找相同的解决方案……我发现这确实是想要的结果!。。但必须使“价格”属性成为可观察的。。因为它将被编辑。。知道我怎么做吗?好的。。你的方法解开了这个谜。。我已经用完整的函数更新了问题,以防有人过来寻找相同的解决方案。。。