Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.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,假设 obj1 = 0: { description: "", holiday: false, id: "", isWeekend: false, percent: 0, pmDescription: "", pmHours: 0, productivity: 0, projectName: "rgffgfg", sowId: "7396", time: 1591641000000, userH

假设

obj1 = 
0: {
description: "",
holiday: false,
id: "",
isWeekend: false,
percent: 0,
pmDescription: "",
pmHours: 0,
productivity: 0,
projectName: "rgffgfg",
sowId: "7396",
time: 1591641000000,
userHours: 0,
userName: "hemant tripathi",
wfh: false,
},
1: {
description: "",
holiday: false,
id: "",
isWeekend: false,
percent: 0,
pmDescription: "",
pmHours: 0,
productivity: 0,
projectName: "rgffgfg",
sowId: "7396",
time: 1591641000000,
userHours: 0,
userName: "hemant tripathi",
wfh: false,
}
2: {
description: "",
holiday: false,
id: "",
isWeekend: false,
percent: 0,
pmDescription: "",
pmHours: 0,
productivity: 0,
projectName: "rgffgfg",
sowId: "7396",
time: 1591641000000,
userHours: 0,
userName: "hemant tripathi",
wfh: false,
}


obj2: {}
我只想在obj2中添加3个键值对。
我想循环访问obj1。在obj2中只添加3个键值对('description','userHours','userName')。我想添加这3个键值对。我们怎样才能做到这一点呢?

您可以这样分配值

让obj1=[{
说明:“,
假期:假,
id:“”,
周末:错,
百分比:0,
pmd说明:“,
时间:0,,
生产力:0,
项目名称:“rgffgfg”,
索维德:“7396”,
时间:1591641000000,
用户小时数:0,
用户名:“hemant tripathi”,
wfh:错,
}, {
说明:“,
假期:假,
id:“”,
周末:错,
百分比:0,
pmd说明:“,
时间:0,,
生产力:0,
项目名称:“rgffgfg”,
索维德:“7396”,
时间:1591641000000,
用户小时数:0,
用户名:“hemant tripathi”,
wfh:错,
}, {
说明:“,
假期:假,
id:“”,
周末:错,
百分比:0,
pmd说明:“,
时间:0,,
生产力:0,
项目名称:“rgffgfg”,
索维德:“7396”,
时间:1591641000000,
用户小时数:0,
用户名:“hemant tripathi”,
wfh:错,
}]
设obj2=[]
obj1.forEach(o=>{
obj2.push({
描述:o.描述,
userHours:o.userHours,
用户名:o.userName
})
})

log(obj2)
假设您需要允许对象中的某些键,那么您可以创建一个包含需要映射到列表acceptedKey中的任何键的列表

var acceptedKey=[“Id”、“description”、“holiday”] 用于(obj1中的var键) { if(接受密钥。包括(密钥)) { var newDict=[]; newDict.push(键:键, 值:obj1[键]) }
}

您可以迭代
obj1
并使用所需的键映射新数组
obj2

const obj2 = obj1.map((val) => ({
  'userName': val.userName,
  'userHours': val.userHours,
  'description': val.description,
}))

console.log(obj2)

这将把您的对象数组复制到另一个对象数组中,其中只包括您想要的键

const source1 = {
  key1: "value1_s1",
  key2: "value2_s1",
  key3: "value3_s1"
  // ...
}

const source2 = {
  key1: "value1_s2",
  key2: "value2_s2",
  key3: "value3_s2"
  // ...
}

const objArr = [source1, source2]; // ...

const keysToCopy = ["key1", "key2"]; // ...

const destObjArr = objArr.map(o => Object.assign({}, Object.keys(o).reduce((obj, k) => {
    if(keysToCopy.includes(k)) obj[k] = o[k];
  return obj;
}, {}) ));

console.log(destObjArr);

/* Outputs 
[{
  key1: "value1_s1",
  key2: "value2_s1"
}, {
  key1: "value1_s2",
  key2: "value2_s2"
}]

*/

现在我们需要在多个对象之间循环,怎么样?是的,对象数组。谢谢。这真的很有帮助。当我们必须在多个对象之间循环时,我们该怎么做呢?编辑了question@UmangMehra我已经更新了支持对象数组的代码。通常不鼓励只粘贴代码而不做解释。请编辑您的答案以解释您的解决方案。
const source1 = {
  key1: "value1_s1",
  key2: "value2_s1",
  key3: "value3_s1"
  // ...
}

const source2 = {
  key1: "value1_s2",
  key2: "value2_s2",
  key3: "value3_s2"
  // ...
}

const objArr = [source1, source2]; // ...

const keysToCopy = ["key1", "key2"]; // ...

const destObjArr = objArr.map(o => Object.assign({}, Object.keys(o).reduce((obj, k) => {
    if(keysToCopy.includes(k)) obj[k] = o[k];
  return obj;
}, {}) ));

console.log(destObjArr);

/* Outputs 
[{
  key1: "value1_s1",
  key2: "value2_s1"
}, {
  key1: "value1_s2",
  key2: "value2_s2"
}]

*/