Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.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_Jquery_Arrays_Object - Fatal编程技术网

Javascript 更改对象(如果存在)

Javascript 更改对象(如果存在),javascript,jquery,arrays,object,Javascript,Jquery,Arrays,Object,我正在用对象填充数组。 我想检查具有特定id的对象是否已经存在 如果对象存在,则替换对象中的值 例如: function art(id,value) { this.id=id; this.value=value; } 数组var my_array=[] 添加到数组my_array.push(艺术) 如何检查对象是否已存在,然后将其替换为新值。是否需要以下内容:- for (var i = 0; i < my_array.length; i++) { if(my_a

我正在用对象填充数组。 我想检查具有特定
id
的对象是否已经存在

如果对象存在,则替换对象中的

例如:

function art(id,value)
{
    this.id=id;
    this.value=value;
}
数组
var my_array=[]

添加到数组
my_array.push(艺术)


如何检查对象是否已存在,然后将其替换为新值。

是否需要以下内容:-

for (var i = 0; i < my_array.length; i++) {
    if(my_array[i].id=="SOMEID")
        my_array[i].value="NEWValue";

}
for(var i=0;i
您想要这样的东西吗:-

for (var i = 0; i < my_array.length; i++) {
    if(my_array[i].id=="SOMEID")
        my_array[i].value="NEWValue";

}
for(var i=0;i
您可以使用:

var my_array = {};

function art(id, value)
{
    this.id = id;
    this.value = value;
}

// test 1:
var newArt1 = new art(1, "value");
if(typeof my_array[newArt1.id] === "undefined" ){  // check if id 1 exists in object;
    my_array[newArt1.id] = newArt1.value;
}

// test 2:
var newArt2 = new art("xxx", "value");
if(typeof my_array[newArt2.id] === "undefined" ){  // check if id xxx exists in object;
    my_array[newArt2.id] = newArt2.value;
}
您可以使用以下方法:

var my_array = {};

function art(id, value)
{
    this.id = id;
    this.value = value;
}

// test 1:
var newArt1 = new art(1, "value");
if(typeof my_array[newArt1.id] === "undefined" ){  // check if id 1 exists in object;
    my_array[newArt1.id] = newArt1.value;
}

// test 2:
var newArt2 = new art("xxx", "value");
if(typeof my_array[newArt2.id] === "undefined" ){  // check if id xxx exists in object;
    my_array[newArt2.id] = newArt2.value;
}

您应该使用密钥对类型关联数组,然后甚至不需要检查它是否存在,因为:

  • 如果它不存在,将创建它
  • 如果它确实存在,它将被覆盖
  • 例如:

    var my_array = new Array();
    
    function art(id,value)
    {
        this.id=id;
        this.value=value;
    }   
    
    var myArt = new art(1,'value');    
    
    //if an array item with this id exists it will be overidden else a new
    //array item will be created
    my_array[myArt.id] = myArt;
    

    为清晰起见进行了更新

    您应该使用密钥对类型关联数组,然后您甚至不需要检查它是否存在,因为:

  • 如果它不存在,将创建它
  • 如果它确实存在,它将被覆盖
  • 例如:

    var my_array = new Array();
    
    function art(id,value)
    {
        this.id=id;
        this.value=value;
    }   
    
    var myArt = new art(1,'value');    
    
    //if an array item with this id exists it will be overidden else a new
    //array item will be created
    my_array[myArt.id] = myArt;
    

    为清晰起见进行了更新

    请参见以下示例:

        var my_array = [];
    
    function art(id, value) {
        this.id = id;
        this.value = value;
    }
    
    function checkIfExistsAndReplace(inArr, object, newValue) {
        for (i = 0; i < inArr.length; i++) {
            if (inArr[i].id == object.id && inArr[i].value == object.value) {
                inArr[i].value = newValue;
                return inArr;
            }
        }
        return false;
    }
    
    for (var i = 0; i < 5; i++) {
        my_array.push(new art("name", i));
    }
    
    console.log(my_array);
    
    console.log(checkIfExistsAndReplace(my_array, new art('name', 4), 'NEWVALUE'));
    
    console.log(checkIfExistsAndReplace(my_array, new art('name', 5)));
    
    var my_数组=[];
    函数艺术(id、值){
    this.id=id;
    这个值=值;
    }
    函数checkIfExistsAndReplace(INAR、object、newValue){
    对于(i=0;i
    也可以看到下面的小提琴


    请参见以下示例:

        var my_array = [];
    
    function art(id, value) {
        this.id = id;
        this.value = value;
    }
    
    function checkIfExistsAndReplace(inArr, object, newValue) {
        for (i = 0; i < inArr.length; i++) {
            if (inArr[i].id == object.id && inArr[i].value == object.value) {
                inArr[i].value = newValue;
                return inArr;
            }
        }
        return false;
    }
    
    for (var i = 0; i < 5; i++) {
        my_array.push(new art("name", i));
    }
    
    console.log(my_array);
    
    console.log(checkIfExistsAndReplace(my_array, new art('name', 4), 'NEWVALUE'));
    
    console.log(checkIfExistsAndReplace(my_array, new art('name', 5)));
    
    var my_数组=[];
    函数艺术(id、值){
    this.id=id;
    这个值=值;
    }
    函数checkIfExistsAndReplace(INAR、object、newValue){
    对于(i=0;i
    也可以看到下面的小提琴


    我不确定您在寻找什么,但如果您想检查对象的特定id并替换它的值,我会比我想象的要多

        for(var i = 0; i < my_array.length; i++){
          if(my_array[i].id === "#123"){
             my_array[i].value = "Some New Value to it"
          }
        }
    
    for(var i=0;i

    PS:始终使用===检查以避免==,因为==具有意外行为

    我不确定您要查找的是什么,但如果您想检查对象的特定id并替换其值,则

        for(var i = 0; i < my_array.length; i++){
          if(my_array[i].id === "#123"){
             my_array[i].value = "Some New Value to it"
          }
        }
    
    for(var i=0;i

    PS:始终检查===尽量避免==,因为==有意外行为

    看看jQuery函数是否可以解决您的问题problem@user123_456如果以下任何一个答案都能解决你的问题,那么就值得将其标记为你的答案,它将来可能会帮助其他人:看看jQuery函数是否可以解决您的问题problem@user123_456如果以下任何一个答案解决了您的问题,那么将其标记为您的答案可能是值得的,这可能会在将来帮助其他人:当检查对象中的属性/键时,您不需要
    typeof
    ,只需执行
    if(我的数组[newArt1.id])
    @仅当值为真时才起作用的metadings。如果值为假(
    未定义的
    空的
    0
    NaN
    ),你的想法行不通。检查对象中是否存在的方法是使用
    in
    hasOwnProperty
    。要检查它是否
    未定义
    ,只需使用
    !==undefined
    在不需要
    类型的对象中检查属性/键,只需执行
    if(我的数组[newArt1.id])
    @仅当值为真时才起作用的metadings。如果值为假(
    未定义
    0
    NaN
    ),你的想法行不通。检查对象中是否存在的方法是使用
    in
    hasOwnProperty
    。要检查它是否
    未定义
    ,只需使用
    !==未定义
    如果密钥不存在,我不想创建k/v对,而只是忽略它怎么办?如果我不想创建k/v对怎么办如果密钥不存在,而只是忽略它?