我有两个数组,带有嵌套的对象,作为API端点调用的一部分下载,一个(预览)只有数字。
示例:
[{
obj1:[1, 2],
obj2:[3, 4]
}]我不得不对另一个端点进行第二次调用,以获取带有字符串的ID列表
示例:
[{
obj1:[{
id:1,
name:'string_name1'
}, {
id:2,
name:'string_name2'
}]
}, {
obj2:[{
id:3,
name:'string_name3'
}, {
id:4,
name:'string_name4'
}]
}];我需要将ID与对象编号的第一个数组进行匹配,因此我有字符串/文本值可以显示在我的web页面上
我有两个函数
第一个方法是从预览数组中提取数字,并将它们推入我自己的可编辑数组中,我将使用该数组在页面上显示
这是函数运行前的数组
objName = [['obj1'], ['obj2']];这是第一个函数,将预览中的名称与数组中的名称进行匹配,并推送值
setNumbers(){
for(let i = 0; i < this.objName.length; i++){
for(var name in this.preview[0]) {
if (name == this.objName[i][0]){
for(var val in this.preview[0][name]) {
this.objName[i].push(this.preview[0][name][val])
}
}
}
}
this.setStrings()
}第二个方法将字段中的ID与objName中的数字进行匹配,并替换为字符串值
public setStrings(){
let feildId, feildName;
for(let i = 0; i < this.fields.length; i++){
var obj = this.fields[i]
for(var name in obj) {
if(this.objName[i][0] == name){
for(let j = 0; j < obj[name].length; j++){
feildId = obj[name][j].id
feildName = obj[name][j].name;
for(let x = 0; x < this.objName[i].length; x++){
if (this.objName[i][x] == feildId){
var index = this.objName[i].indexOf(feildId)
if (index !== -1) {
this.objName[i][index] = feildName;
}
}
}
}
}
}
}
console.log(this.objName)
}输出的objName数组最终如下所示:
[['obj1', 'string_name1', 'string_name2'], ['obj2', 'string_name3', 'string_name4']]它有效,但让我的眼睛痛,一定有一个更简单,更干净的方式来做这件事?
https://stackoverflow.com/questions/44446997
复制相似问题