js对象扁平化的方法:
1、使用 concat() 方法在
2、 使用 flat() 方法
3、使用用户定义的函数
此示例将设置一个包含数组对象、普通对象和嵌套对象的对象。我们将在方法和方法的帮助下展平整个对象。reduce()concat()
Object.keys()将返回一个包含所有其他对象的数组,并将合并这些对象。concat()
- var object = { az: 90,
- 0: [1, 2, 3, 4],
- x:{
- a:'y',
- b:'z'
- }
- };
- result = Object.keys(object).reduce(function (value, key) {
- return value.concat(key, object[key]);
- }, []);
- console.log(result);
输出:

所有对象都平展在单个数组中,嵌套对象是该合并数组的成员。在输出中,您几乎无法区分先前的键值对。
我们分离了键,并用值将它们连接起来。
在这里,我们将观察一个类似的对象,以展平其组件。我们将使用该方法来平展主对象的各个对象的值。take_meflat()
因此,我们只会得到值的扁平化版本。
- const flatten=(obj) => Object.values(obj).flat();
- const take_me = { x:[1,2,3],
- y:[4,5,6,7],
- z:{
- xx: 8,
- yy: 9
- }
- };
- console.log(flatten(take_me));
输出:

用于检索平展对象的用户定义函数不基于任何内置属性或方法。一个简单的条件语句将决定如何在对象中设置键对值。result
我们将检查对象的类型,如果它不是数组,我们将递归运行该函数。而且,该对象将采用简化的键值对。flattenresult
代码栅栏可以更好地预览任务。
- let obj = {
- Company: "xyz",
- Address: "aaa",
- contact: 0987654,
- mentor: {
- HTML: "A",
- CSS: "B",
- JavaScript: "C"
- },
- abc : [1,2,3]
- };
- const flatten = (ob) => {
- let result = {};
- for (const i in ob) {
- if ((typeof ob[i]) === 'object' && !Array.isArray(ob[i])) {
- const temp = flatten(ob[i]);
- for (const j in temp) {
- result[j] = temp[j];
- }
- }
- else {
- result[i] = ob[i];
- }
- }
- return result;
- };
- console.log(flatten(obj));
输出:

资料: