如何为数组中的每条记录设置一个属性的值

Posted

技术标签:

【中文标题】如何为数组中的每条记录设置一个属性的值【英文标题】:how to set a value for one property for every record in an array 【发布时间】:2017-09-19 14:04:22 【问题描述】:

我有一个包含 1 条或更多记录的数组。对于 ex 的每条记录:有一个属性 id。我想将此名称设置为默认值:8。请帮助我。 数组:[id:2,名称:“x”,id:4,名称:“y”] 我试过这种方式

if (!Ext.isEmpty(detailLineItems) && (detailLineItems.length > 0)) 
canProcess = false;
Ext.Array.forEach(array, function (r) 
    if (r.id == 0 || Ext.isEmpty(r.id)) 
        canProcess = true;
       //how do I set this id
        r.id == 6;

    
);

【问题讨论】:

使用array#map。把你整理出来 对不起,我没有明白你的意思 使用.map 而不是.forEach。 developer.mozilla.org/en-US/docs/Web/javascript/Reference/… 【参考方案1】:

您不应该更改记录的内部 id,因为这可能会破坏一切;框架期望record.id 中的值与record.get(record.idProperty) 相同。相反,您应该始终使用 setter 方法:record.set("id", 8)

但您实际上要搜索的是模型字段上的 defaultValue configuration:

fields:[
    name: 'id',
    type: 'int',
    defaultValue: 8
]

请注意,字段 id 在 ExtJS 中得到特殊处理,只要模型的 idProperty 默认为 id。一个存储区只能包含一条在idProperty 定义的字段中具有相同非空值的记录,因此如果将它们全部添加到同一个存储区,您最终只会得到一条记录,而所有其他记录都将被删除。因此,如果您需要商店中具有相同id 的多条记录,则必须将模型上的idProperty 更改为其他内容,例如

idProperty: 'someNonExistentProperty'

这可能会导致存储sync 操作出现问题。如果您只尝试将id 设置为固定值,因为您的后端需要整数id,并且ExtJS 为新记录生成的默认id 是非数字的(例如ext-myModel-1),您可以查看@987654323 @。

【讨论】:

【参考方案2】:

Alexander 已经回答了您的问题,但请注意,您的代码语句 r.id == 6; 使用的是相等运算符而不是赋值运算符 r.id = 6 ; :-)

【讨论】:

以上是关于如何为数组中的每条记录设置一个属性的值的主要内容,如果未能解决你的问题,请参考以下文章

如何为数据库表中的每条记录生成一个id?

如何为 Oracle 11g 中分层表的每条记录分配父组 ID?

如何为 h:dataTable/ui:repeat 的每一行/项目设置转换器属性?

(VBA)为表中的每条记录创建一个文件“pdf”

将比例 z 检验应用于数据框中的每条记录

如何为 LIstView 中的每一行添加一个按钮?