Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用对象元素可用的最低序列更新数组中的对象元素?_Javascript_Arrays_Typescript - Fatal编程技术网

Javascript 如何使用对象元素可用的最低序列更新数组中的对象元素?

Javascript 如何使用对象元素可用的最低序列更新数组中的对象元素?,javascript,arrays,typescript,Javascript,Arrays,Typescript,我正在验证和更新具有最低可用序列号的对象数组中对象的name属性 var instances = [ { "Name": "Packer-Builder-01", "InstanceId": "i-03802c9af5ca28c15" }, { "Name": "Packer-Builder", "InstanceId": "i-03

我正在验证和更新具有最低可用序列号的对象数组中对象的name属性

    var instances = [
          {
            "Name": "Packer-Builder-01",
            "InstanceId": "i-03802c9af5ca28c15"
          },
          {
            "Name": "Packer-Builder",
            "InstanceId": "i-03802c9af5ca25z17"
          },
          {
            "Name": "Packer-Builder",
            "InstanceId": "i-03802c9af5ca38l21"
          },
          {
            "Name": "Packer-Builder-03",
            "InstanceId": "i-0f9c76032682211e8"
          }
        ]
应该是,

 instances =   [
          {
            "Name": "Packer-Builder-01",
            "InstanceId": "i-03802c9af5ca28c15"
          },
          {
            "Name": "Packer-Builder-02",
            "InstanceId": "i-03802c9af5ca25z17"
          },
          {
            "Name": "Packer-Builder-04",
            "InstanceId": "i-03802c9af5ca38l21"
          },
          {
            "Name": "Packer-Builder-03",
            "InstanceId": "i-0f9c76032682211e8"
          }
        ]

我这样做是从对象数组创建两个数组,然后使用for each循环比较它们。解决方案是可行的,但我觉得对于这个需求来说,代码太多了。请建议一些方法?

看起来您需要为每个键创建一个映射数组,然后使用添加后缀的帮助函数更新name属性

var instances = {Name: {...}, InstanceId: {...}};
Object.keys(instances).map(name => name).forEach((k) => {
    instances[k].name = addSuffixIfNotExist(instances[k].name, k);
});

function addSuffixIfNotExist(name, index) {
    // code
}

您可以在中收集所有已使用的数字,并为编号获取一个新的未使用值

var实例=[{Name:“Packer-Builder-01”,InstanceId:“i-03802c9af5ca28c15”},{Name:“Packer-Builder”,InstanceId:“i-03802c9af5ca25z17”},{Name:“Packer-Builder-01”,InstanceId:“i-03802c9af5ca38l21”},{Name:“Packer-Builder-03”,InstanceId:“i-0F9C7603268211E8”},
values=newset(instances.map(({Name})=>+Name.match(/\d{2}$/));
forEach((i=>o=>{
if(/\d{2}$/.test(o.Name))返回;
而(values.has(i))i++;
o、 Name+='-'+i.toString().padStart(2,'0');
i++;
})(1));
console.log(实例)

。作为控制台包装{max height:100%!important;top:0;}
谢谢您的帮助,这正是我要找的。@ZAM,太好了。请查看此处,以: