javascript - 如何在忽略某些键的同时转换对象中的某些值?

标签 javascript

我想用不同的键遍历数组中的对象,而不使用 for-each 循环:

   [ { id: 1,
    ip: 'xx.xxx.xx.xx',
    mn1: '',
    mn2: '',
    mn3: '',
    mn4: '',
    mn5: '',
    mn6: '',
    mn7: '' },
  { id: 2,
    ip: 'xxx.xxx.xx.xx',
    mn1: '',
    mn2: '',
    mn3: '',
    mn4: '',
    mn5: '',
    mn6: '',
    mn7: '' },
  { id: 4,
    ip: 'xxx.xxx.xx.xxx',
    mn1: '',
    mn2: '',
    mn3: '',
    mn4: '',
    mn5: '',
    mn6: '',
    mn7: '' } ]

我想检查每列 mn 的长度值,然后用一些信息更新它,我可以只做 if else 条件,但我认为有更好的方法来做到这一点。我尝试使用 Object.entries 然后进行 for 循环,但由于 id 和 ip 列,它不起作用。

最佳答案

也许这样的事情对你有用?此解决方案对您的问题采用函数式方法,并避免显式使用 for-loop 构造:

var input = [ { id: 1,
    ip: 'xx.xxx.xx.xx',
    mn1: '',
    mn2: '',
    mn3: '',
    mn4: '',
    mn5: '',
    mn6: '',
    mn7: '' },
  { id: 2,
    ip: 'xxx.xxx.xx.xx',
    mn1: '',
    mn2: '',
    mn3: '',
    mn4: '',
    mn5: '',
    mn6: '',
    mn7: '' },
  { id: 4,
    ip: 'xxx.xxx.xx.xxx',
    mn1: '',
    mn2: '',
    mn3: '',
    mn4: '',
    mn5: '',
    mn6: '',
    mn7: '' } ];
    
var output = input.map(object => {
  
  return Object.entries(object).reduce((result, entry) => {
    
    let key = entry[0];
    let value = entry[1];
    
    if(key.startsWith('mn')) {
      
     value = `updated value for ${ key }`;
    }    
    
    result[key] = value;
    return result;
    
  }, {});
});

console.log(output);

关于javascript - 如何在忽略某些键的同时转换对象中的某些值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53400126/

相关文章:

javascript - 如何创建流畅的滚动效果?

javascript - Chrome默默嵌入桌面应用程序,并且可以通过Javascript在本地保存文件

javascript - 如何连接从api接收到的字符串

javascript - 如果值为 0,我可以隐藏文本框值吗?

javascript - 如果以空格开头或结尾,则正则表达式匹配

javascript - ListView 不触发 selectionchanged

javascript - jQuery Mobile 无法在 Google Chrome 上运行

javascript - 如何更新 v-html Vue 中的值

javascript - 调试 javascript 幻灯片

javascript - 使用 DOH 对非 Dojo javascript 项目进行单元测试