遍历数组,并将子 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 数据帧