首页 > 解决方案 > 无论键需要将值推入数组

问题描述

这里的键可能是动态的。所以我只需要获取值而不考虑键。

var test = []
var arrayObj = [
  {
    "abc": {
        "value": "1"
    },
    "def": {
        "value": "TERN"
    },
    "aec": {
        "value": "SASU"
    },
    "rtg": {
        "value": "FI"
    },
    "ttyg": {
        "value": "9"
    },
    "yty": {
        "value": "uyMFG"
    }
},

 {
    "abc": {
        "value": "1"
    },
    "def": {
        "value": "EXT"
    },
    "aec": {
        "value": "SAM"
    },
    "rtg": {
        "value": "FINISH"
    },
    "ttyg": {
        "value": "5"
    },
    "yty": {
        "value": "MFG"
    }
}]
function printValues(obj) {
    for (var key in obj) {
        if (typeof obj[key] === "object") {
            printValues(obj[key]);   
        } else {
           test.push(obj[key])
        }

    }
        

}
printValues(arrayObj);

    console.log(test);

我得到这个

["1","TERN","SASU","FI","9","uyMFG","1","EXT","SAM","FINISH","5","MFG"]

但是,我需要得到如下输出

[["1","TERN","SASU","FI","9","uyMFG"],["1","EXT","SAM","FINISH","5","MFG"]]

我是否以正确的方式做事,或者我可以得到比我的方法更好的方法?请建议我如何实现这一目标。我不知道我哪里出错了。

标签: javascriptjquery

解决方案


如果你不是特别需要函数是递归的,你可以用一些ObjectArray方法来实现。

var arrayObj=[{abc:{value:"1"},def:{value:"TERN"},aec:{value:"SASU"},rtg:{value:"FI"},ttyg:{value:"9"},yty:{value:"uyMFG"}},{abc:{value:"1"},def:{value:"EXT"},aec:{value:"SAM"},rtg:{value:"FINISH"},ttyg:{value:"5"},yty:{value:"MFG"}}];

const output = arrayObj.map(obj => {
  return Object.values(obj).map(({value}) => value)
})

console.log(output);


推荐阅读