我收到的javascript对象有问题。 我收到这样的话:
{
"name":"a",
"surname":"b"
},
{
"name":"c",
"surname":"d"
},
{
"name":"e",
"surname":"f"
}
我将它存储在变量中,我希望有一个json对象数组,即JSON数组。
[{ “名”:“一”, “姓”: “B” }, { “名”: “C”, “姓”: “d” }, { “名”: “E”, “姓”: “F” }]
我需要一些像array.push()的东西,但如果我之前没有拆分文件,我就无法做到。
答案 0 :(得分:3)
这是一种无效的表示法 - JavaScript对象或JSON。如果您可以修改输入或者可以让某人修复它,那么使数据源有效肯定会更好。
但是,有时我们必须使用错误的数据(外部提供程序等),然后您可以通过在开头和结尾添加几个括号使其成为有效的JSON数组:
var str = '{ "name":"a", "surname":"b" }, { "name":"c", "surname":"d" }, { "name":"e", "surname":"f" }';
var arr = JSON.parse("[" + str + "]");
//console.log(arr);
for (var i = 0; i < arr.length; i++)
{
console.log("Name #" + (i + 1) + ": " + arr[i].name);
console.log("Surname #" + (i + 1) + ": " + arr[i].surname);
}
它可能看起来有点hacky,但是当你必须使用这样的输入时,这是你能做的最好的事情。
它看起来比尝试用逗号分割对象要好得多,至少对我而言。
答案 1 :(得分:0)
我有一个函数可以根据需要拆分多个数组中的对象数组,请参阅代码:)
var BATCH_SIZE = 2;
var fullList = [{name:"a",surname:"e"},{name:"a",surname:"e"}
, {name:"a",surname:"e"},{name:"a",surname:"e"}, {name:"a",surname:"e"}];
Batchify(fullList,BATCH_SIZE);
function Batchify(fullList,BATCH_SIZE){
var batches = [];
var currentIndex = 0;
while (currentIndex < fullList.length) {
var sliceStart = currentIndex;
var sliceEnd = currentIndex + BATCH_SIZE;
batches.push(fullList.slice(sliceStart, sliceEnd));
currentIndex += BATCH_SIZE;
}
console.log(batches);
}
我在JSfiddle中有代码示例,希望能解决您的问题! :)