gpt4 book ai didi

javascript - "Uncaught SyntaxError: Unexpected token :"当没有 ":"时?

转载 作者:行者123 更新时间:2023-11-28 19:59:27 26 4
gpt4 key购买 nike

给定没有索引的 JSON 数据:

var knol = [
{"hant":"火","status":1,"rank":30,"score": 1},
{"hant":"人","status":1,"rank":33,"score": 2},
{"hant":"山","status":1,"rank":60,"score": 5},
{"hant":"是","status":1,"rank":50,"score": 3}
];

给定一个 JS 函数来使用索引重新创建数据:

var addIndex = function(object, key1, key2){
var data = object;
var newData = "[";

for (var i in data) {
if (!key2) {
var newIndex = data[i][key1]
} else {
var newIndex = data[i][key1] + data[i][key2]
}

newData = newData + "\"" + newIndex + "\":" + JSON.stringify(data[i]) +",";
}

newData = newData.concat("]").replace(",]", "]");
console.log(newData);
newData = JSON.parse(newData);
return newData;
};

knol = addIndex(knol, "hant");

我收到错误“Uncaught SyntaxError: Unexpected token :”,而代码中的指示位置没有“:”。这似乎使我的较大脚本崩溃了。知道发生了什么事吗?

fiddle :http://jsfiddle.net/n9pf6/2/

最佳答案

中间的JSON不正确,所以最终的JSON.parse正在失败。中间文本为["火":{"hant":"火",.. ,正如控制台上所报告的,这确实是不正确的,因为数组没有键。

只需将整个对象图构建/重建为 JS 对象,然后使用 JSON.stringify一次 - 或者,在本例中,永远不会,因为最终结果无论如何都是一个 JS 对象!

var addIndex = function(data, key1, key2){
var newData = {}; // new JS object - there is /no/ JSON here.
var newIndex;
for(var i in data){
if(!key2){
newIndex = data[i][key1];
}else{
newIndex = data[i][key1] + data[i][key2];
}
// add data to new object with appropriate property/key
// and do NOT manually build JSON text.
newData[newIndex] = data[i];
}
// return object directly; it's not JSON text, no need to parse it!
return newData;
};

关于javascript - "Uncaught SyntaxError: Unexpected token :"当没有 ":"时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21917056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com