javascript - 按键和值过滤数组

标签 javascript

我有以下数组对象,想要使用键和值进行过滤

var arrayObj = [{name:'ram',lastname:'jha',address:{fistLine:'100 ft raod',street:'kfc'},mobileNumber:12345745},
               {name:'rakesh',lastname:'jha',address:{fistLine:'200 ft raod',street:'pizza hut'},mobileNumber:12345746},
               {name:'pankaj',lastname:'jha',address:{fistLine:'300 ft raod',street:'abc line'},mobileNumber:12345747}];

我想要如下输出:

let newarrayObj:[['name','lastname', 'address.fistLine','address.street','mobileNumber'],
                 ['ram','jha','100 ft raod','kfc','12345745'],
                 ['rakesh','jha','200 ft raod','pizza hut','12345746'],
                 ['pankaj','jha','300 ft raod','abc line','12345747']]

最佳答案

假设 arrayObj 至少有 1 个项目,无论您的对象有多深,您都可以执行以下操作:

const flatKeys = object => Object.entries(object).reduce((keys, [key, value]) => {
  if (typeof value === 'object') { // && value !== null if needed
    flatKeys(value).forEach(subKey => keys.push(key + '.' + subKey))
  } else {
    keys.push(key)
  }

  return keys
}, [])

const flatValues = object => Object.values(object).reduce((values, value) => {
  if (typeof value === 'object') { // && value !== null if needed
    flatValues(value).forEach(subValue => values.push(subValue))
  } else {
    values.push(value)
  }

  return values
}, [])

const arrayObj = [
  { name: 'ram',    lastname:'jha', address: { fistLine:'100 ft raod', street: 'kfc'       }, mobileNumber: 12345745 },
  { name: 'rakesh', lastname:'jha', address: { fistLine:'200 ft raod', street: 'pizza hut' }, mobileNumber: 12345746 },
  { name: 'pankaj', lastname:'jha', address: { fistLine:'300 ft raod', street: 'abc line'  }, mobileNumber: 12345747 }
]

const newarrayObj = [flatKeys(arrayObj[0]), ...arrayObj.map(flatValues)]

console.log(newarrayObj)

关于javascript - 按键和值过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58358467/

相关文章:

javascript - 替换 Knockout.js observableArray 中的所有元素

javascript - 如何在父函数中加入函数/监听器

javascript - ES6 - Promise.all 在 Promise.resolve 中

javascript - Gatsby 中的事件链接似乎被尾部斜杠破坏了

java - JavaScript 版本

javascript - 当动态添加按钮时,从 onclick 事件调用原型(prototype)函数

javascript - Python:使用PyQt和QtWebkit填充html表单不显示

javascript - chrome.storage 保存值

javascript - Javascript 中的内存布局——面向数据与面向对象的设计

javascript - JQuery 获取连续的元素序列