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

Javascript 基于其他对象删除对象的关键点

Javascript 基于其他对象删除对象的关键点,javascript,Javascript,我需要一种方法来自动删除一个对象的关键点,以有其他相同的关键点 例如: var objA = {key1:1, key2:2, key3:3}; var objB = {key1:4, key2:5, key3:6, key4:7, key5:8} 在这种情况下,我希望我的objB只保留key1、key2和key3,因为这两个对象是共享的。您可以使用此代码来实现您想要的 var objA={key1:1,key2:2,key3:3}; var objB={key1:4,key2:5,key3

我需要一种方法来自动删除一个对象的关键点,以有其他相同的关键点

例如:

var objA = {key1:1, key2:2, key3:3};
var objB = {key1:4, key2:5, key3:6, key4:7, key5:8}

在这种情况下,我希望我的
objB
只保留
key1
key2
key3
,因为这两个对象是共享的。

您可以使用此代码来实现您想要的

var objA={key1:1,key2:2,key3:3};
var objB={key1:4,key2:5,key3:6,key4:7,key5:8};
Object.key(objB).forEach(函数(key){
如果(!objA[key]){
删除objB[key];
}
});

控制台日志(objB)您可以使用此代码实现您想要的功能

var objA={key1:1,key2:2,key3:3};
var objB={key1:4,key2:5,key3:6,key4:7,key5:8};
Object.key(objB).forEach(函数(key){
如果(!objA[key]){
删除objB[key];
}
});

控制台日志(objB)
使用
for..在
中循环对象,
hasOwnProperty
检查对象是否有属性,并使用
delete
删除键

var objA={
关键1:1,
关键2:2,
关键3:3
};
变量objB={
关键1:4,
关键2:5,
关键3:6,
关键4:7,
关键5:8
}
用于(objB中的var键){
如果(!objA.hasOwnProperty(键)){
删除objB[键]
}
}

console.log(objB)
使用
for..in
在对象上循环,
hasOwnProperty
检查对象是否有属性,使用
delete
删除键

var objA={
关键1:1,
关键2:2,
关键3:3
};
变量objB={
关键1:4,
关键2:5,
关键3:6,
关键4:7,
关键5:8
}
用于(objB中的var键){
如果(!objA.hasOwnProperty(键)){
删除objB[键]
}
}

console.log(objB)
您可以使用
对象.key
数组.filter
数组。reduce
来实现这一点:

var objA={key1:1,key2:2,key3:3};
var objB={key1:4,key2:5,key3:6,key4:7,key5:8}
console.log(Object.keys(objB)
.filter(key=>objA[key])
.reduce((对象,键)=>{
obj[key]=objB[key];
返回obj;

}, {}));
您可以使用
对象.键
数组.过滤器
数组.减少
来实现此目的:

var objA={key1:1,key2:2,key3:3};
var objB={key1:4,key2:5,key3:6,key4:7,key5:8}
console.log(Object.keys(objB)
.filter(key=>objA[key])
.reduce((对象,键)=>{
obj[key]=objB[key];
返回obj;

}, {}));尝试更现代的JavaScript:

函数reduceObject(baseObject={},dataObject={}){
返回Object.keys(baseObject)
.reduce((结果、键)=>{
结果[键]=数据对象[键];
返回结果;
}, {});
}
const objA={key1:1,key2:2,key3:3};
const objB={key1:4,key2:5,key3:6,key4:7,key5:8};
log(reduceObject(objA,objB));
console.log(reduceObject(objA));
log(reduceObject(未定义,objB));

log(reduceObject({a:'key'},{a:'thing',on:'theFly'}))尝试更现代的JavaScript:

函数reduceObject(baseObject={},dataObject={}){
返回Object.keys(baseObject)
.reduce((结果、键)=>{
结果[键]=数据对象[键];
返回结果;
}, {});
}
const objA={key1:1,key2:2,key3:3};
const objB={key1:4,key2:5,key3:6,key4:7,key5:8};
log(reduceObject(objA,objB));
console.log(reduceObject(objA));
log(reduceObject(未定义,objB));

log(reduceObject({a:'key'},{a:'thing',on:'theFly'}))
如果您不介意创建一个新对象来替换旧对象,可以对
对象的结果使用
.reduce()
。entries()
如下:

var objA={key1:1,key2:2,key3:3};
var objB={key1:4,key2:5,key3:6,key4:7,key5:8};
objB=Object.entries(objB).reduce((res[k,v])=>
objA中的k?Object.assign(res,{[k]:v}):res
, {});

控制台日志(objB)
如果您不介意创建一个新对象来替换旧对象,可以对
对象的结果使用
.reduce()
。entries()
如下:

var objA={key1:1,key2:2,key3:3};
var objB={key1:4,key2:5,key3:6,key4:7,key5:8};
objB=Object.entries(objB).reduce((res[k,v])=>
objA中的k?Object.assign(res,{[k]:v}):res
, {});
控制台日志(objB)
这是一个ES5版本,它不使用
delete
操作符,而是构造一个新对象,该对象仅具有
objA
中的键,并将其分配给
objB


这是一个ES5版本,它不使用
delete
操作符,而是构造一个新对象,该对象仅具有
objA
中的键,并将其分配给
objB

迄今为止尝试了什么?请包括尝试的解决方案,为什么不起作用,以及预期的结果。这将真正帮助我们找出您的代码的问题。到目前为止您尝试了什么?请包括尝试的解决方案,为什么它们不起作用,以及预期的结果。这将真正帮助我们找出代码的问题。这还将返回objA中但不在objB中的密钥。问题说:
对象具有与其他对象相同的密钥。
是的,但问题并没有说它也需要objA中但不在objB中的密钥。(它甚至说它想要共享的)。@Zlatko:这不是问题的准确引述。它表示对象应该只“保留”在
objA
中的键。换句话说,结果应该是
objB
的键,这些键也存在于
objA
中,或者基本上是这些对象的交点。完整的引文说“删除”键以获得结果。我同意这一措辞有点笨拙。这也将返回在objA中但不在objB中的键。问题说:
对象具有与其他对象相同的键。
是的,但问题并没有说它也需要在objA中且不在objB中的键。(它甚至说它想要共享的)。@Zlatko:这不是问题的准确引述。上面写着obje
var objA = { key1: 1, key2: 2, key3: 3 };
var objB = { key1: 4, key2: 5, key3: 6, key4: 7, key5: 8 };

objB = Object.keys(objB).reduce(function(result, key) {
  if (objA.hasOwnProperty(key)) {
    result[key] = objB[key]
  }

  return result;
}, {});