Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.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,我有一个对象数组 const data = [{id:1, a:false, b:[5,4]}, {id:2, a:true, b:[]}, {id:3, c:'', d:{}}, {id:4, e:[1,2,3], f:{h: 1}}]; 基本上,我试图返回一个对象,该对象具有在该对象中找到的所有属性,然后给我最新的值 所以它应该给我以下结果: // { id: 4, a: false, b: [], c: '', d: {}, e: [1,2,3], f: {h: 1}} 我使用了

我有一个对象数组

const data = [{id:1, a:false, b:[5,4]},
 {id:2, a:true, b:[]},
 {id:3, c:'', d:{}},
 {id:4, e:[1,2,3], f:{h: 1}}];
基本上,我试图返回一个对象,该对象具有在该对象中找到的所有属性,然后给我最新的值

所以它应该给我以下结果:

// { id: 4, a: false, b: [], c: '', d: {}, e: [1,2,3], f: {h: 1}}

我使用了Object.getOwnPropertyNames和Object.values,但是已经被卡住了一段时间,对JS来说是相当新的。

您可以使用一个简单的调用将数据中的所有对象合并到一个对象中

const data = [{id:1, a:true, b:[]},
              {id:2, a:false, b:[]},
              {id:3, foo:'', bar:{}},
              {id:4, bla:[1,2,3], blabla:{x: 1}}];
let result = {};
    data.map((item) => {
        result = {...result, ...item};
    }
)
console.log(result);
Object.assign({}, ...data)
该方法可以合并任意数量的源对象。因此,数组将它们作为参数传递。由于对象是按顺序合并的,因此优先选择后面的对象。如果一个特性存在于多个对象中,则索引较高的对象将覆盖上一个值。因此,id:4出现在输出中

下面是一个片段:

const data=[{id:1,a:false,b:[5,4]}, {id:2,a:true,b:[]}, {id:3,c:,d:{}, {id:4,e:[1,2,3],f:{h:1}}]; const output=Object.assign{},…数据
console.logoutput我会像这样使用Array.forEach和Object.assign:

const arr = [{id:1, a:true, b:[]},
 {id:2, a:false, b:[]},
 {id:3, foo:'', bar:{}},
 {id:4, bla:[1,2,3], blabla:{x: 1}}];

const obj = {};
arr.forEach(el => Object.assign(obj, el));


console.log(obj);

forEach遍历数组和Object中的每个元素。assign将el的属性应用于现有对象obj。在每次迭代中,它将创建obj中不存在的属性,或重新分配确实存在的属性的值。

不清楚要实现什么,结果对象不包含初始数组中的所有属性输出应该有:true,因为它存在于第二个对象中。我会使用Array.map为什么在没有映射操作但只执行简单迭代时使用.map?非常好!我更新为使用forEach。事实上,我对@adiga的回答投了更高的票,因为我更喜欢它,而且我总是忘记传播。