【发布时间】:2018-01-09 21:15:12
【问题描述】:
我正在使用 Code Canyon 脚本 Spin2Win (https://codecanyon.net/item/spin2win-wheel-spin-it-2-win-it/16337656),它使用本地 JSON 文件来创建分段。
控制分段的 JSON 文件部分具有以下格式。
"segmentValuesArray" : [
{"probability":10, "type": "string", "value": "$10^Coupon", "win": true, "resultText": "You won a $10 Coupon", "userData": {"score":0}},
{"probability":30, "type": "string", "value": "Lose", "win": false, "resultText": "Thank you for Playing", "userData": {"score":0}},
{"probability":5, "type": "string", "value": "$25^Coupon", "win": true, "resultText": "You won a $25 Coupon", "userData": {"score":0}},
{"probability":30, "type": "string", "value": "Lose", "win": false, "resultText": "Thank you for Playing", "userData": {"score":0}},
{"probability":2, "type": "string", "value": "Free Spin", "win": true, "resultText": "You Won a Free Spin", "userData": {"score":0}},
{"probability":30, "type": "string", "value": "Lose", "win": false, "resultText": "Thank you for Playing", "userData": {"score":0}},
{"probability":3, "type": "string", "value": "SWAG", "win": true, "resultText": "You won SWAG", "userData": {"score":0}},
{"probability":30, "type": "string", "value": "Lose", "win": false, "resultText": "Thank you for Playing", "userData": {"score":0}},
{"probability":1, "type": "string", "value": "GOOGLE^Home", "win": true, "resultText": "You won a Google Home", "userData": {"score":0}}
],
我的问题是我有一张 50 美元和 100 美元的优惠券,它们的概率值较低。但我在任何时候都只想要轮子上的 2 张优惠券。所以我的想法是随机选择一个优惠券值,然后在旋转脚本处理 json 之前使用查找和替换更新到两个优惠券段。
我已经测试过了,可以给segmentValueArrary加一个ID标签,如下:
{"id":"01", "probability":10, "type": "string", "value": "$10^Coupon", "win": true, "resultText": "You won a $10 Hosting Coupon", "userData": {"score":0}},
我找到了这个答案:JSON Object array inside array find and replace in javascript
但它只给出了如何替换一个值的示例,我需要替换概率、值和 resultText 任何修改代码的尝试查找和替换代码都失败了。
***** 更新 #1 *****
我玩过一些代码并开始在 Jsfiddle 中工作。 (http://jsfiddle.net/6347s9bo/)
我现在遇到的问题是开发人员如何加载和处理 JSON。这是他的代码
loadJSON(function(response) {
// Parse JSON string to an object
var jsonData = JSON.parse(response);
........
这是他的 loadJSON 函数
function loadJSON(callback) {
var xobj = new XMLHttpRequest();
xobj.overrideMimeType("application/json");
xobj.open('GET', './wheel_data.json', true);
xobj.onreadystatechange = function() {
if (xobj.readyState == 4 && xobj.status == "200") {
//Call the anonymous function (callback) passing in the response
callback(xobj.responseText);
}
};
xobj.send(null);
}
我现在得到的错误是 object.map 不是一个函数。我将 findAndReplace() 调用放在他的 JSON.parse 调用之后,这应该将文本转换为对象。
不知道我错过了什么
【问题讨论】:
标签: javascript arrays json