我有一个字符串,它是由 /r 分隔的 JSON 值。它有点像数据库表中的记录。看起来像:
"{"id":"id","hole":"hole","stat":"stat","value":"value"}/r{"id":1354075540949,"hole":"1" ,"stat":"score","value":"4"}/r{"id":1354075540949,"hole":"1","stat":"putts","value":"1"} /r{"id":1354075540949,"hole":"1","stat":"fir","value":"y"}/r{"id":1354075540949,"hole":"1", "stat":"gir","value":"n"}/r"
第一行是列名(id、hole、stat、value),我只是给它们相同的值。由 /r 分隔的所有其他行是实际数据。
我用 /r 拆分这个字符串,然后循环遍历结果并将每个元素的 JSON.parse() 的结果推送到一个数组,所以现在我有一个具有给定结构属性的对象数组(id、hole、stat、价值)。一切正常,除了“id”字段最终为真或假而不是大长数字。为什么这样做?
var tblData = localStorage.getItem(tblName).split("/r");
var data = new Array();
// fill the array
for (i = 1; i < tblData.length - 1; i++)
data.push(JSON.parse(tblData[i]));
[编辑] 似乎这确实有效,但是我在此之后运行了一个 jQuery.grep(),它将 id 属性设置为 true/false。
var changeRecords = jQuery.grep(data, func);
其中 func 是:
function (v) { return v.id == gCurrentRoundID && v.hole == gCurrentHole; }
不知道为什么它将 id 设置为 true/false。
[编辑2]
没关系,我发现了我的错误。上面的函数不是正确的,而我确实只有 1 个等号表示 v.id = gCurrentRoundID,这就是为什么将它设置为真/假的原因。