如何将元素添加到对象中,以及如何在javascript中测试复杂对象中是否存在值?
我是JavaScript新手,我有几个问题。首先,我将通过两个对象来计算它们之间的差异。所以,我有我的循环和一堆if语句用于测试。我要做的是,如果我找到了我要寻找的元素,我需要将它添加到一个新对象中,而我的对象是一个键和值。格式如下:如何将元素添加到对象中,以及如何在javascript中测试复杂对象中是否存在值?,javascript,object,Javascript,Object,我是JavaScript新手,我有几个问题。首先,我将通过两个对象来计算它们之间的差异。所以,我有我的循环和一堆if语句用于测试。我要做的是,如果我找到了我要寻找的元素,我需要将它添加到一个新对象中,而我的对象是一个键和值。格式如下: obj={programValue[i]:deviceValue[i]}我这样做是因为我想要这种格式:obj={'p1':'app1'} 这将导致一个错误,如何在对象中添加元素 我的第二个问题是如何遍历包含其他对象本身的对象,并测试包含其他对象的另一个对象的键或值
obj={programValue[i]:deviceValue[i]}
我这样做是因为我想要这种格式:obj={'p1':'app1'}
这将导致一个错误,如何在对象中添加元素
我的第二个问题是如何遍历包含其他对象本身的对象,并测试包含其他对象的另一个对象的键或值是否存在。
下面是一个例子来解释:
var obj1={{'p1':'app1'},{'p2':'app2'}代码>
var obj2= {{'p1':'app2'}, {'p1':'app1'}}
因此,我想测试obj1中的app2
是否存在于obj2中,如果存在,那么也测试该键。我需要的是它们有一些值(app),但键不同(p1或p2)。
我尝试了很多东西,但没有满足我的需要
谢谢,使用es6计算属性
var obj={[programValue[i]] : deviceValue[i]}
还是es5
var obj={};
obj[programValue[i]] = deviceValue[i];
关于第二个问题:
Object.entries(obj1).some(([key1, value1])=>Object.entries(obj2).some(([key2, value2])=>key1===key2 && value1===value2))
关于问题1:
格式如下:obj={programValue[i]:deviceValue[i]}我这样做是因为我需要这种格式:obj={'p1':'app1'},结果是一个错误,我如何在我的对象中添加元素
如果使用ES6,您可以这样做
设obj={[programValue[i]]:deviceValue[i]}
如果programValue[i]返回“p1”,而deviceValue[i]返回“app1”
那么您的obj将是{'p1':'app1'}
如果不使用ES6,则必须首先声明空对象,然后设置属性
var obj={[programValue[i]] : deviceValue[i]}
var obj={};
obj[[programValue[i]]=deviceValue[i]
关于你的第二个问题,
var obj2={{'p1':'app2'},{'p1':'app1'}
该结构不起作用。它必须是一个对象数组。然后,您可以迭代数组或使用索引直接访问元素
var obj2=[{'p1':'app1'},{'p2':'app2'}]
obj2[0]。p1//app1
如果仍然需要对象,则每个对象都需要一个属性
var obj2={1:{'p1':'app1},2:{'p2':'app2}
obj2.one.p1//app1var obj2={{'p1':'app2'},{'p1':'app1'}
不是有效语法。正确的对象语法应该是var obj2={'p1':'app2',p2':'app1'}
要向对象添加元素,您可以执行以下操作:object2['someUniqueId']='随意'
或object2.someUniqueId='随意'
我认为您必须将obj1
和obj2
都转换为一个数组:var obj1=[{'p1':'app1'},{'p2':'app2'}];
var obj2=[{'p1':'app1'},{'p2':'app2'};
,然后您可以尝试检查数组中是否有对象obj2
不是有效的javascript对象如果您在初始化过程中试图使用动态属性名,则需要使用正确的属性名,如果您的环境支持itOk,谢谢@PatrickEvans,可以这样做。@Dom为什么?我们不能有对象对象对象吗?当然可以。但是对象由键:值
对组成。{p1':'app2'}
缺少外部对象的键。也许您想要一个对象数组?无论哪种方式,请每个问题只问一个问题。我使用es5,但当我尝试该方法时,它只添加一个元素。因为我将其放入循环中,所以它可以迭代并将元素添加到我的对象中。您知道为什么吗?谢谢!当我尝试objec时t2.programValue[i]=deviceValue[i]它不起作用,并表示无法读取未定义的属性“0”,因为在该时间我的i=0如果i=0,您必须确保object2.programValue[i]
和deviceValue[i]
都是数组。两者都必须按如下方式构造var deviceValue=[“value”,“value2”];
和object2.programValue=[]
获取等于“value”的deviceValue[0]并将其放入programValue[0]