繁体   English   中英

映射对象数组中的值

[英]Map values in array of objects

我有一个数组

const nodes = [
    { layer: '0' },
    { layer: 'input' },
    { layer: '0' },
    { layer: 'output' },
    { layer: '1' }
};

我想保留数组,但是所有图层值都应该更改。

输入层应具有值1,所有数字值应增加2,输出层应具有新的最高数字值加1。所有值应为数字而不是字符串。

所以新的数组将是

const nodes = [
    { layer: 2 },
    { layer: 1 },
    { layer: 2 },
    { layer: 4 },
    { layer: 3 }
};

我已经完成了

const nodes = [
    { layer: '0' },
    { layer: 'input' },
    { layer: '0' },
    { layer: 'output' },
    { layer: '1' }
};

const output = Math.max.apply(Math, nodes.map((node) => Number.parseInt(node.layer, 10) || 0)) + 3;

nodes.map((node) => {
  layer: neuron.layer === 'input' ? 1 : (neuron.layer === 'output' ? output : Number.parseInt(neuron.layer, 10) + 2)
})

看来可行,但是代码确实很丑陋。

我想知道是否可以做得比这更整洁。

这可能是完成这项工作的一种方式。

 var nodes = [ { layer: '0' }, { layer: 'input' }, { layer: '0' }, { layer: 'output' }, { layer: '1' } ], result = nodes.map(n => isNaN(+n.layer) ? n.layer === "input" ? {layer:1} : {layer: n.layer} : n.layer = {layer:+n.layer + 2}); result.find(o => o.layer === "output").layer = result.filter(f => !isNaN(f.layer)) .reduce((p,c) => p.layer > c.layer ? p : c) .layer + 1; console.log(result); 

那这个呢:

 const nodes = [ { layer: '0' }, { layer: 'input' }, { layer: '0' }, { layer: 'output' }, { layer: '1' } ]; nodes.filter( o => o.layer === 'output' )[0].layer = 1 + nodes.reduce( (max, node) => Math.max(max, node.layer = +(node.layer === 'input') || +node.layer+2 || 0), 0); console.log(nodes); 

对于那些想知道const :常量性质只能保护变量免于重新赋值; 但是存储在数组中的对象可以自由更改。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM