【发布时间】:2022-06-15 22:08:05
【问题描述】:
我有一个包含对象的大数据源。我想要做的是,对于每个键的每个新值,将对象放到数组的顶部。每次,对于每个键,我发现一个新值,我希望对象上升到该数据源。因此,最上面的 x 元素将是属性可以具有的 x 个不同值。所以给定:
arr[0] = {name: john, age: 14, adress: xxx}
arr[1] = {name: john, age: 14, adress: xxx}
arr[2] = {name: marie, age: 14, adress: xxx}
arr[3] = {name: marie, age: 14, adress: xxx}
arr[4] = {name: john, age: 15, adress: xxx}
我会得到
arr[0] = {name: john, age: 14, adress: xxx}
arr[1] = {name: marie, age: 14, adress: xxx}
arr[2] = {name: john, age: 15, adress: xxx}
arr[3] = {name: marie, age: 14, adress: xxx}
arr[4] = {name: john, age: 14, adress: xxx}
我目前正在做的是遍历所有对象及其键以找到每个键的新值。这样做,将此值保存到唯一数组中,并将当前对象放在我的数组顶部。对每个具有唯一键值的对象重复此过程,然后依次到达第二个位置、第三个位置,依此类推。
filterDS(dataSource){
let uniqueColumns;
let i = 0;
let j = 0;
let temp;
dataSource.forEach(data => {
let keys = Object.keys(data);
keys.forEach( key => {
console.log(key + ":" + data[key]);
uniqueColumns[key].push(data[key]);
temp = dataSource[i];
j = dataSource.indexOf(data);
dataSource[i] = dataSource[j];
dataSource[j] = temp;
i++
})
});
return dataSource;
}
但是,尝试读取未定义的值似乎会卡住。我尝试检查数据源、当前键值或事件当前对象是否为空,但它没有改变。它进入未定义或空字段并中断。我不知道我在这里做错了什么。
【问题讨论】:
标签: javascript arrays foreach undefined javascript-objects