将序列号属性附加到javascript中的对象数组

Posted

技术标签:

【中文标题】将序列号属性附加到javascript中的对象数组【英文标题】:Append serial number property to array of objects in javascript 【发布时间】:2017-03-19 16:11:10 【问题描述】:

我在 javascript 中有一个对象数组。

var obj_arr = 
[
    DATA_ID: 281,
    DATA_NAME: 'CIM',
    DATA_STATE: '0'
,

    DATA_ID: 382,
    DATA_NAME: 'CIMx',
    DATA_STATE: '0' 
,

    DATA_ID: 482,
    DATA_NAME: 'CIMy',
    DATA_STATE: '1' 
]

我想为这个数组中的每个对象附加一个序列号。附加的对象看起来像这样;

var obj_arr_appended = 
[
    SERIAL_NO: 1,
    DATA_ID: 281,
    DATA_NAME: 'CIM',
    DATA_STATE: '0'
,

    SERIAL_NO: 2,
    DATA_ID: 382,
    DATA_NAME: 'CIMx',
    DATA_STATE: '0' 
,

    SERIAL_NO: 3,
    DATA_ID: 482,
    DATA_NAME: 'CIMy',
    DATA_STATE: '1' 
]

序列号会自动递增。我正在使用 node.js v6

【问题讨论】:

【参考方案1】:

这段代码应该可以工作。

var obj_arr = 
    [
        DATA_ID: 281,
        DATA_NAME: 'CIM',
        DATA_STATE: '0'
    ,
    
        DATA_ID: 382,
        DATA_NAME: 'CIMx',
        DATA_STATE: '0' 
    ,
    
        DATA_ID: 482,
        DATA_NAME: 'CIMy',
        DATA_STATE: '1' 
    ]    

    for (let i = 0; i < obj_arr.length; i++) 
            obj_arr[i]["SERIAL_NO"] = i;
        

    console.log(obj_arr);

【讨论】:

【参考方案2】:

使用array.map,您可以在每个元素上运行一个函数:

var obj_arr_appended = obj_arr.map(function(currentValue, Index) 
   currentValue.SERIAL_NO = Index
   return currentValue
)

【讨论】:

我一直很喜欢 FP 式答案的优雅。我更喜欢你的答案而不是我的答案:)。赞成

以上是关于将序列号属性附加到javascript中的对象数组的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript将属性附加到对象[重复]

JavaScript将属性附加到对象[重复]

JavaScript - 如何合并/附加到对象/数组 - ReactJS - 传播语法

5.9 作为关联数组的对象

使用 NodeJS 将新对象附加到 DynamoDB 中的 JSON 数组

Javascript对象不附加新属性