【发布时间】:2014-05-19 00:10:53
【问题描述】:
我对 JS 世界还很陌生,并试图将我的头脑围绕在对象上。
就一些上下文而言,我在这里的最终实验如下:我有一个表格,它显示从 csv 收集的数据。这很好用!现在下一个挑战是复制该表的现有列。事情很快就崩溃了……
我意识到我需要做的第一件事是提取我要复制的表的“列”。当然,当我说列时,我的意思是“属性”(恰好显示为列)。
好的,这是不工作的 for 循环:
var namelist = [CSV Data]; // assume it's loaded
var templist = [];
for(var i =0; i < namelist.length; i++) {
templist[i] = $namelist[i].NAME;
console.log(templist[i]);
};
这只是返回一个数组中的名称列表......我需要这个作为一个对象,它会输出类似“NAME:Bob Smith”而不仅仅是“Bob Smith”......我认为第一步是将属性/列提取为它自己的对象,然后将此属性作为适用于对象的每个“行”/实例的新属性注入主组合。
需要注意的是这是一个嵌套对象,里面有一个类似这样的json:
[
{
"ATTRIBUTES":"ACTIVE",
"CODE":"21124",
"TITLE":"JOB1",
"NAME":"BOB SMITH",
},
{
"ATTRIBUTES":"ACTIVE",
"CODE":"14232",
"TITLE":"JOB2",
"NAME":"JOE SHMOE",
},
{
"ATTRIBUTES":"ACTIVE",
"CODE":"234234",
"TITLE":"JOB3",
"NAME":"MARY JONES",
}
]
在我注入我的副本后,它可能看起来像这样:
[
{
"ATTRIBUTES":"ACTIVE",
"CODE":"21124",
"TITLE":"JOB1",
"NAME":"BOB SMITH",
"NAME2":"BOB SMITH",
},
{
"ATTRIBUTES":"ACTIVE",
"CODE":"14232",
"TITLE":"JOB2",
"NAME":"JOE SHMOE",
"NAME2":"JOE SHMOE",
},
{
"ATTRIBUTES":"ACTIVE",
"CODE":"234234",
"TITLE":"JOB3",
"NAME":"MARY JONES",
"NAME2":"MARY JONES",
}
]
期待你的想法!谢谢。
附言。如果有帮助,我正在使用 AngularJS 框架,可能不是因为我认为这是一个非常“基本”的核心 javascript 问题。
【问题讨论】:
-
那不是嵌套对象,那是一个集合(对象数组)。尝试查看
map、filter和reduce。 -
为什么不使用
templist[i] = "Name:"+$namelist[i].NAME;? -
为什么所有内容都大写?如果需要大写,请在 CSS 中使用
text-transform,不要将其硬编码到代码中。 -
@elclanrs,就像数据库本身发送 CSV 的方式一样。值得小写吗?
-
@jovian,我现在正在使用手机,但我认为这行不通。控制台指示键是 i 的属性,因此它变为 0:Bob Smith... 我怀疑添加只会使其变为 0:名称:Bob Smith
标签: javascript angularjs oop