如何将对象数组(]
)中的对象属性添加到另一个数组(inputArray
)。
output
当var inputArray = [
{ subject: 'Maths', integervalue: '40', booleanvalue: null },
{ subject: 'Science', integervalue: '50', booleanvalue: null },
{ subject: 'Chemi', integervalue: '35', booleanvalue: null },
{ subject: 'Stats', integervalue: null, booleanvalue: true },
{ subject: 'Other', integervalue: null, booleanvalue: false },
{ subject: 'History', integervalue: null, booleanvalue: true },
];
属性与每个对象匹配时,应添加 output
。
如果匹配位于subject
,则'Chemi'
应该等于output.suba
integerValue
inputArray
subject
的{{1}}属性。< / p>
Ergo,将设置为
的值'Chemi'
如果inputArray[2].integervalue.
为空,则应将其设置为integerValue
的{{1}}属性。
所以booleanValue
看起来像这样:
inputArray
提前致谢。
答案 0 :(得分:1)
您可以使用array#map
生成新字符串的对象数组。然后使用Object.assign()
,您可以使用所有键值创建一个新对象。
var inputArray = [ { subject: 'Maths', integervalue: '40', booleanvalue: null }, { subject: 'Science', integervalue: '50', booleanvalue: null }, { subject: 'Chemi', integervalue: '35', booleanvalue: null }, { subject: 'Stats', integervalue: null, booleanvalue: true }, { subject: 'Other', integervalue: null, booleanvalue: false }, { subject: 'History', integervalue: null, booleanvalue: true }],
output = Object.assign(...inputArray.map(({subject,integervalue, booleanvalue}) => ({[subject]:integervalue || booleanvalue})));
console.log(output);
&#13;
答案 1 :(得分:1)
var inputArray = [
{ subject: 'Maths', integervalue: '40', booleanvalue: null },
{ subject: 'Science', integervalue: '50', booleanvalue: null },
{ subject: 'Chemi', integervalue: '35', booleanvalue: null },
{ subject: 'Stats', integervalue: null, booleanvalue: true },
{ subject: 'Other', integervalue: null, booleanvalue: false },
{ subject: 'History', integervalue: null, booleanvalue: true },
];
var myOutput = inputArray.reduce( function(output, currentValue) {
output[currentValue.subject] = currentValue.integervalue || currentValue.booleanvalue;
return output
}, {});
console.log(myOutput);
&#13;
答案 2 :(得分:0)
使用数字索引而非字母索引的解决方案,如果你需要字母索引,我可以改善这一点。
const output = inputArray.reduce( ( _output, e, _index ) => {
const query = `WHERE subject is = ${e.subject} set ${e.integervalue || e.booleanvalue}`
_output[ `sub${_index}` ] = query;
return _output;
}, {} )
答案 3 :(得分:0)
Hendry的解决方案可以修改为字母索引如下:
const output = inputArray.reduce( ( _output, e, _index ) => {
const query = `WHERE subject is = ${e.subject} set ${e.integervalue || e.booleanvalue}`
const charIndex = String.fromCharCode(97 + _index);
_output[ `sub${charIndex }` ] = query;
return _output;
}, {} )