Javascript 在对象数组中循环?

Javascript 在对象数组中循环?,javascript,arrays,angular,typescript,indexof,Javascript,Arrays,Angular,Typescript,Indexof,我的问题是更新一个数组,包含对象,每个对象都包含数组,我想更新全局数组,值引用对象内部的数组,这个逻辑 generalArray=[{name:String,features:String[]}] // Try edit message let array1 = [{ name: "num", features: ['id'] }, { name: "cat", features: ['gender'] }]; ob = {name:'num2', features:[

我的问题是更新一个数组,包含对象,每个对象都包含数组,我想更新全局数组,值引用对象内部的数组,这个逻辑

generalArray=[{name:String,features:String[]}]

// Try edit message
let array1 = [{ name: "num", features: ['id']  },
            { name: "cat", features: ['gender'] }];
ob = {name:'num2', features:['id']};

function updateArr(arr,ob){

  const index = arr.findIndex(x => 
      ob.features.toString() === x.features.toString()
                              );
    if (index === -1) {
        arr.push(ob);
    } else {
        arr[index] = ob;
    }
}
console.log(array1);
updateArr(array1,ob);
console.log(array1);

当任何对象的features数组包含一个字符串时,这是非常有效的,但是如果它包含多个字符串,那么exm features=['id','gender']就不能做任何事情!请帮忙,谢谢

这里我为你的问题找到了解决办法

var array1=[{name:“num”,特性:['id','gender']},
{姓名:“猫”,特征:[性别]};
ob={name:'num2',features:['id']};
函数更新器(arr、ob){
对于(变量i=0;i控制台日志(array1)在这里,我为您的问题提出了一个解决方案

var array1=[{name:“num”,特性:['id','gender']},
{姓名:“猫”,特征:[性别]};
ob={name:'num2',features:['id']};
函数更新器(arr、ob){
对于(变量i=0;i控制台日志(array1)选项1:要素数组中元素的顺序无关紧要时

您可以简单地更改下面代码行中的比较运算符

ob.features.toString() === x.features.toString()

选项2:如果要素数组中元素的顺序很重要。然后您只需删除
.sort()


注意:如果您不想使用字符串化,那么您可以使用这里的答案中提到的数组比较功能-。

选项1:当要素数组中的元素顺序无关紧要时

您可以简单地更改下面代码行中的比较运算符

ob.features.toString() === x.features.toString()

选项2:如果要素数组中元素的顺序很重要。然后您只需删除
.sort()

注意:如果您不想使用字符串化,那么您可以使用这里的答案中提到的数组比较功能-。

let array1=[{name:“num”,特性:['id']},
{姓名:“猫”,特征:[性别]};
ob={name:'num2',features:['id']};
函数更新器(arr、ob){
常数索引=arr.findIndex(x=>
ob.特征。包括(x.特征)
//ob.features.toString()==x.features.toString()
);
调试器
如果(索引==-1){
arr.push(ob);
}否则{
arr[index]=ob;
}
}
控制台日志(array1);
更新耳环(阵列1,ob);
控制台日志(array1)
let array1=[{name:“num”,特性:['id']},
{姓名:“猫”,特征:[性别]};
ob={name:'num2',features:['id']};
函数更新器(arr、ob){
常数索引=arr.findIndex(x=>
ob.特征。包括(x.特征)
//ob.features.toString()==x.features.toString()
);
调试器
如果(索引==-1){
arr.push(ob);
}否则{
arr[index]=ob;
}
}
控制台日志(array1);
更新耳环(阵列1,ob);

控制台日志(array1)请给出您期望的示例,它不是很清楚。我看到逻辑决定您是否应该将对象推送到数组。期望的结果是什么?也许你可以分享一些示例输入和输出应该是什么。看起来对我来说很有效。您正在尝试添加到
功能之一
数组还是
数组1
数组?请给出您期望的示例,这不是很清楚。我看到了确定是否应将对象推送到数组的逻辑。期望的结果是什么?也许你可以分享一些示例输入和输出应该是什么。看起来对我来说很有效。您是要添加到
功能之一
阵列还是
阵列1
阵列?