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

Posted

技术标签:

【中文标题】遍历数组,并将子 JSON 转换为 observablearray?【英文标题】:Loop through array, and convert child JSON to observablearray? 【发布时间】:2018-05-13 08:33:56 【问题描述】:

这可能是一个非常知名的问题,并且可能已经在 Stack Overflow 中解决了,但我搜索过但没有任何运气。

我有这个由 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 ??
        );

已编辑

如果其他人来寻找如何做到这一点的解决方案,我会在下面提供完整的示例:

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

【问题讨论】:

【参考方案1】:

如果我没听错的话:

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

【讨论】:

我看到这确实是想要的结果!.. 必须使“价格”属性成为可观察的.. 因为它将被编辑.. 知道我该怎么做吗? 好的..你的方法解决了这个谜题..我已经用完整的功能更新了这个问题,以防有人过来寻找相同的解决方案......【参考方案2】:

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

https://developer.mozilla.org/en-US/docs/Web/javascript/Reference/Global_Objects/Array/map

【讨论】:

虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会失效。 我会检查一次 :) 感谢您的快速评论!

以上是关于遍历数组,并将子 JSON 转换为 observablearray?的主要内容,如果未能解决你的问题,请参考以下文章

使用jQuery遍历HTML表格,将表格中的数据转换成JSON

遍历 url 端点并将 json 转换为 pandas 数据帧

有没有办法遍历 ListView 的所有子视图并将它们转换为 TextView

在打字稿中将 JSON 转换为字符串数组

如何遍历 JSON 坐标并将注释构建为一个函数?

循环遍历对象数组,并将它们转换为 UL 中的 LI 项 [重复]