我是JavaScript的新手,我有几个问题。首先,我通过两个对象来计算它们之间的差异。所以,我有我的循环和一堆if语句用于测试。我所做的是,如果我找到了我正在寻找的元素,我需要将它添加到一个新的对象中,而我的对象是一个键和值。格式是这样的:我这样做是因为我想要这样的格式:obj={'p1': 'app1'}
这个结果是一个错误,我如何在我的对象中添加一个元素呢?
我的第二个问题是,如何遍历包含其他对象本身的对象,并测试另一个包含对象的对象的键或值的存在。这里有一个例子来解释:var obj1={{'p1':'app1'}, {'p2':'app2'}};
var obj2= {{'p1':'app2'}, {'p1':'app1'}}
所以我想测试来自obj1的app2
是否存在于obj2中,如果存在,那么也测试这个密钥。我需要的是他们有一些值(应用程序),但不同的键(p1或p2)。我尝试了很多东西,但都不能满足我的需要。
谢谢,
发布于 2018-06-01 06:13:36
使用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))
发布于 2018-06-01 06:20:32
对于问题1:
格式是这样的: obj={programValuei : deviceValuei}我这样做是因为我想要这样的格式: obj={'p1':'app1'},这个结果是错误的,我如何在我的对象中添加元素?
如果使用ES6,可以这样做,让obj = {[programValuei]:deviceValuei};
如果programValuei返回'p1‘,deviceValuei返回'app1’,则您的obj将为{'p1':'app1'}
如果不使用ES6,则必须首先声明空对象,然后设置属性
var obj = {};obj[[programValuei] = deviceValuei;
对于您的第二个问题,var obj2= {{'p1':'app2'},{'p1':'app1'}}
这种结构不起作用。它必须是一个对象数组。然后,您可以遍历数组或使用index直接访问元素。
var obj2 ={'p1':'app1'},{'p2':'app2'}
obj2.p1 // app1
如果您仍然需要一个对象,则需要为每个对象指定一个属性
var obj2 = {one:{'p1':'app1},two:{'p2':'app2}}
obj2.one.p1 //app1
发布于 2018-06-01 06:39:38
var obj2 = {{'p1':'app2'}, {'p1':'app1'}}
不是有效语法。正确的对象语法应该是var obj2 = {'p1':'app2', 'p2':'app1'}
。
要向对象添加元素,可以执行object2['someUniqueId'] = 'whatever you like'
或object2.someUniqueId = 'whatever you like'
我相信你必须把obj1
和obj2
都转换成一个数组:var obj1 = [{'p1':'app1'}, {'p2':'app2'}];
var obj2 = [{'p1':'app1'}, {'p2':'app2'}];
,然后你可以尝试用这个例子How to determine if object is in array检查一个对象是否在你的数组obj2
中
https://stackoverflow.com/questions/50633452
复制相似问题