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的回答投了更高的票,因为我更喜欢它,而且我总是忘记传播。