我有一个像这样的对象数组
[ { '0': { notify_item: '1' } },
{ '1': { notify_item: '2' } },
{ '2': { notify_item: '3' } } ]
现在,我想将'0'
替换为'Invoice'
之类的文本,将'0'
键的值替换为{ 'sms': true,email:'false' }
之类的值。
我希望用一些文本及其值来替换每个键,例如{ 'sms': true,email:'false' }
所以在替换后我想要这样的东西
[ { 'Invoice': { 'sms': true,email:'false' } },
{ 'ManualReminder': { 'sms': true,email:'false' },
{ 'AutomaticReminder': { 'sms': true,email:'false' } ]
我无法理解我已尝试过拼接方法,但它无法正常工作。请给出一些提示
答案 0 :(得分:0)
可能不需要转换数据,您可能只是获得新结果。 也许这样的事情对你有帮助。
var input = [ { '0': { notify_item: '1' } },
{ '1': { notify_item: '2' } },
{ '2': { notify_item: '3' } } ];
var keyMap = {'0': 'Invoice', '1': 'ManualReminder', '2': 'AutomaticReminder'};
var result = Object.keys(input).map(function (key) {
var item = {},
value = input[key]; //{notify_item:'1'} for first iteration
//do your logic to convert {notify_item: '1' | '2' | '3'}
item[keyMap[key]] = ''; //to whatever you need
return item;
});
console.log(result);

答案 1 :(得分:0)
这是map
的工作。
它也比它应该更难,因为你的数据结构很奇怪。像{ notification_type: 0, notify_item: 1 }
这样的东西不会更容易使用吗?
答案 2 :(得分:0)
使用Array.map
函数迭代数组。在map
函数中,您可以使用switch
语句匹配适当的值并返回所需的输出。
var arr = [{
'0': { notify_item: '1' }
},
{
'1': { notify_item: '2' }
},
{
'2': { notify_item: '3' }
}];
var modifiedArr = arr.map(function(item) {
var newItem = {};
for ( var key in item) {
var newItemKey = getKey(key);
var newItemValue = getValue(item[key]);
}
newItem[newItemKey] = newItemValue;
return newItem;
});
console.log(modifiedArr);
function getKey (key) {
switch(key) {
case '0':
return 'Invoice';
case '1':
return 'ManualReminder';
case '2':
return 'AutomaticReminder';
default:
return 'default';
}
}
function getValue (value) {
switch(value.notify_item) {
case '1':
return { 'sms': true,email:'false' };
case '2':
return { 'sms': true,email:'false' };
case '3':
return { 'sms': true,email:'false' };
default:
return 'default';
}
}

[ { 'Invoice': { 'sms': true,email:'false' } },
{ 'ManualReminder': { 'sms': true,email:'false' },
{ 'AutomaticReminder': { 'sms': true,email:'false' } ]