另一个javascript复制问题
原始json另一个javascript复制问题,javascript,Javascript,原始json var json = [{ "LABEL":"foo1", "DATA":340020, "BAR":235 }, { "LABEL":"foo2", "DATA":140084, "BAR":330 }, { "LABEL":"fooN", "DATA":126489, "BAR":120 }]; 在所需格式下方,其中新的数据对应于旧的条 [{ "LABEL":"foo1", "DATA":235 }, { "LABEL":"foo2", "DAT
var json =
[{ "LABEL":"foo1", "DATA":340020, "BAR":235 },
{ "LABEL":"foo2", "DATA":140084, "BAR":330 },
{ "LABEL":"fooN", "DATA":126489, "BAR":120 }];
在所需格式下方,其中新的
数据
对应于旧的条
[{ "LABEL":"foo1", "DATA":235 },
{ "LABEL":"foo2", "DATA":330 },
{ "LABEL":"fooN", "DATA":120 }];
没什么特别的花哨。我会使用嵌套循环:
var index, jBar, obj;
jBar = [];
for (index = 0; index < json.length; ++index) {
obj = json[index];
jBar[index] = {LABEL: obj.LABEL, DATA: obj.BAR};
}
var指数,jBar,obj;
jBar=[];
for(索引=0;索引
以上要点:
- 使用
创建新的空白数组以分配给[]
jBar
- 使用老式的索引循环(而不是
,)在for..in
数组中循环json
- 使用对象文本(
)创建要放入{…}
的条目jBar
- 通过分配到下一个可用插槽,将它们添加到jBar。您可以使用
jBar.push({…})代码>相反,但令人惊讶的是,它在一些平台上速度较慢,这一点非常清楚,所以
- 没有什么特别的花哨。我会使用嵌套循环:
var index, jBar, obj;
jBar = [];
for (index = 0; index < json.length; ++index) {
obj = json[index];
jBar[index] = {LABEL: obj.LABEL, DATA: obj.BAR};
}
var指数,jBar,obj;
jBar=[];
for(索引=0;索引
以上要点:
- 使用
创建新的空白数组以分配给[]
jBar
- 使用老式的索引循环(而不是
,)在for..in
数组中循环json
- 使用对象文本(
)创建要放入{…}
的条目jBar
- 通过分配到下一个可用插槽,将它们添加到jBar。您可以使用
jBar.push({…})代码>相反,但令人惊讶的是,它在一些平台上速度较慢,这一点非常清楚,所以
var i;
var json=
[{“LABEL”:“foo1”,“DATA”:340020,“BAR”:235},
{“LABEL”:“foo2”,“DATA”:140084,“BAR”:330},
{“LABEL”:“fooN”,“DATA”:126489,“BAR”:120}];
var jBar=
[{“标签”:“foo1”,“数据”:235},
{“标签”:“foo2”,“数据”:330},
{“LABEL”:“fooN”,“DATA”:120}];
对于(VarI=0;iVarI;
var json=
[{“LABEL”:“foo1”,“DATA”:340020,“BAR”:235},
{“LABEL”:“foo2”,“DATA”:140084,“BAR”:330},
{“LABEL”:“fooN”,“DATA”:126489,“BAR”:120}];
var jBar=
[{“标签”:“foo1”,“数据”:235},
{“标签”:“foo2”,“数据”:330},
{“LABEL”:“fooN”,“DATA”:120}];
对于(var i=0;i您正在将数组属性设置为未定义的值。JSON.stringify忽略数组的其他属性您正在将数组属性设置为未定义的值。JSON.stringify忽略数组的其他属性请尽量精确。jBar.DATA
不存在。除此之外,jBar.DATA
属性es从json.BAR
属性中获取其值。@Eric:不,这是一个没有详细说明您要做什么的问题。阅读这个问题很容易,也不会理解数据与BAR
的区别。在文本中包含一句说明您的目标是什么的句子并不重要,它可以帮助人们帮助您。请尽量保持沉默精确。jBar.DATA
不存在。除此之外,jBar.DATA
属性从json.BAR
属性获取它们的值。@Eric:不,这是一个没有详细说明您试图做什么的问题。阅读这个问题非常容易,而且不会捕捉到DATA
与BAR
的对比。一句话在文本中显示您的目标是什么并不重要,而且有助于人们帮助您。可以使用索引代替jBar.length。在某些浏览器中,递减while循环可能更快:var i=json.length;while(i--){obj=json[i];jBar[i]=…;}
@RobG:您一定在查看旧的副本,我几乎立即更改了它。:)啊,是的!所有这些AJAX的东西都有问题,页面不总是正确更新。@RobG:Re递减循环:我在几年前测试过,发现在某些浏览器(Firefox 3.IIRC)中速度明显较慢与其他人相比,它并没有明显快一些。不像,C或C++中的等效循环,这将是标准的实践。@ RoGG:如果结果仍然是相同的,那么好奇:Chrome在减量循环中更快,但是我担心其他浏览器中的性能更差。-)Firefox确实减慢了IE7。(我手头的)与缓存的长度增量循环差不多。所有这些都可能是过早的优化。:-)可以使用索引代替jBar.length。在某些浏览器中,递减while循环可能更快:var I=json.length;而(I-){obj=json[I];jBar[I]=…;}
@RobG:你一定在看一本旧的,我几乎马上就把它改了。:)啊,是的!所有这些AJAX的东西都有一个问题,页面并不总是正确更新。@RobG:Re the Decrenting loop:几年前我测试过,发现在某些浏览器(Firefox 3.something IIRC)中速度明显较慢,而在其他浏览器中则没有明显加快。与C或C++中的等效循环不同,在这里,这将是标准的实践。@ RoG:如果这些结果仍然是相同的,那么好奇:Chrome在减量循环中更快,但我担心在其他浏览器中的性能更高。Firefox的速度确实较慢,IE7(我手边的)与缓存的长度增量循环差不多。无论如何,所有这些都可能是过早的优化。:-)我在问题设置中没有看到任何未定义属性,也没有使用JSON.stringify
。我在你的问题中没有看到这方面的问题-“jBar是JSON的一个副本,但它应该如何实现?”@Andrey:我把它理解为“如何用JSON
创建类似于jBar
的东西?”我在问题设置中没有看到任何未定义的属性,也没有使用JSON.stringify
。我在你的问题中没有看到任何关于这个问题的问题--