繁体   English   中英

将键值对添加到数组中的特定对象

[英]Adding key value pair to specific objects in an array

我有一个看起来像这样的对象数组:

[{headerName: "Test 1", field: "Test 1", type_id: 1}, {headerName: "Test 2", field: "Test 2", type_id: 2}, {headerName: "Test 3", field: "Test 3", type_id: 3}, {headerName: "Name", field: "Name", type_id: 3}, {headerName: "Income", field: "Income", type_id: 2}]

这只是一个数组的基本示例,它可以是任意长度。 基本上我需要做的是当type_id为3时,我需要向数组中的那些对象添加一个额外的键/值对。

我将如何去做呢?

任何帮助将非常感激。

谢谢你的时间。

更新:

我想添加的键/值对是: cellRenderer: customEditor

ES6解决方案

yourArray = yourArray.map( obj => {
    if( obj.type_id === 3 ){
      return { ...obj, cellRenderer: customEditor };
    }
    return obj;
}

ES5解决方案

yourArray = yourArray.map( function( obj ){
    if( obj.type_id === 3 ){
      Object.defineProperty(obj, "cellRenderer", { value : customEditor })
    }
    return obj;
}

使用Array.mapObject.keys函数的解决方案:

var arr = [{headerName: "Test 1", field: "Test 1", type_id: 1}, {headerName: "Test 2", field: "Test 2", type_id: 2}, {headerName: "Test 3", field: "Test 3", type_id: 3}, {headerName: "Name", field: "Name", type_id: 3}, {headerName: "Income", field: "Income", type_id: 2}],
    extraObj = {'cellRenderer': 'customEditor'};

arr.map(function(obj){
   if (obj['type_id'] === 3) {
       Object.keys(this).forEach((k) => obj[k] = this[k]);
   }
}, extraObj);

console.log(JSON.stringify(arr, 0, 4));

输出:

[
    {
        "headerName": "Test 1",
        "field": "Test 1",
        "type_id": 1
    },
    {
        "headerName": "Test 2",
        "field": "Test 2",
        "type_id": 2
    },
    {
        "headerName": "Test 3",
        "field": "Test 3",
        "type_id": 3,
        "cellRenderer": "customEditor"
    },
    {
        "headerName": "Name",
        "field": "Name",
        "type_id": 3,
        "cellRenderer": "customEditor"
    },
    {
        "headerName": "Income",
        "field": "Income",
        "type_id": 2
    }
]

结合mapObject.assign的另一种方法

var data = [{headerName: "Test 1", field: "Test 1", type_id: 1}, {headerName: "Test 2", field: "Test 2", type_id: 2}, {headerName: "Test 3", field: "Test 3", type_id: 3}, {headerName: "Name", field: "Name", type_id: 3}, {headerName: "Income", field: "Income", type_id: 2}];

var extend = { cellRenderer: 'customEditor' }

data = data.map( item => {
  if( item.type_id == 3 ){
    return Object.assign( item, extend );
  }
  return item;
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM