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
阵列?