提问人:noname028743 提问时间:7/10/2023 最后编辑:noname028743 更新时间:7/11/2023 访问量:54
从对象中复杂数据结构中的数组传输数据
Transfer data from an array in a complex data structure in an object
问:
我的任务是将数据从数组传输到现有对象。我有一个具有不同值(Number,Strings,..)的数组和一个具有 Number,String,1-D Array、2-D Array。现在我想知道将所有数据从数组 MyArray 获取到对象 MyObject 的最智能方法。例如,我的对象如下所示:
const MyObject = {
String: '',
Number: 0,
Array2D: [[0, 0, 0], [0, 0, 0], [0, 0, 0]],
Array1D: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
Struct: {
Number: 0,
Boolean: false,
Array1D: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
}
};
数组是这样的:
let MyArray [HelloWord,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,true,0,0,0,0,0,0,0,0,0,0];
有没有可能以一种简单的方式做到这一点?我尝试了 Object.key() Object.Value() Object.entities(),但我无法解决我的问题。希望有人能帮我谢谢。
我的第一个解决方案:MyObject 到 String:
let JSON = JSON.stringify(MyObject);
之后,我对每个数组元素使用 typeof:
MyArray.forEach(function(element){
switch(typeof(element)) {
case 'string':
JSON = JSON.replace('""', element);
break;
case 'number':
JSON = JSON.replace('-1', element.toString());
break;
case 'boolean':
JSON = JSON.replace('false', element.toString());
break;
default:
break;
}
});
问题:我必须将 MyObject 中的每个数字设置为 -1。此外,无法将值设置为 -1,因为它完全基于在字符串中搜索 -1 并替换它。
我的目标应该是:MyArrays 的每个值都在 MyObject 中注册。
答:
0赞
Nina Scholz
7/10/2023
#1
您可以获取值并检查值是否为对象,然后获取值或获取此值。
const
flat = o => o && typeof o === 'object'
? Object.values(o).flatMap(flat)
: [o],
data = { String: '', Number: 0, Array2D: [[0, 0, 0], [0, 0, 0], [0, 0, 0]], Array1D: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], Struct: { Number: 0, Boolean: false, Array1D: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] } },
result = flat(data);
console.log(result);
0赞
Konrad
7/11/2023
#2
如果项目数始终相同,您可以执行以下操作:
let MyArray = ['HelloWord',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,true,0,0,0,0,0,0,0,0,0,0];
const MyObject = {
String: MyArray[0],
Number: MyArray[1],
Array2D: [MyArray.slice(2, 5), MyArray.slice(5, 8), MyArray.slice(8, 11)],
Array1D: MyArray.slice(11, 20),
Struct: {
Number: MyArray[21],
Boolean: MyArray[22],
Array1d: MyArray.slice(23, 33)
}
}
console.log(MyObject)
评论