如何使用javascript中的另一个对象生成多个对象

我有这样一个对象,

{ "Distrubutor":"DISTRIBUTOR1", "INCLUDE":"INDIA,United States", "EXCLUDE":"KARNATAKA-INDIA,CHENNAI-TAMILNADU-INDIA", "PARENT-ID":"" } 

我想要生成多个对象通过使用主对象的INCLUDE属性,任何人都可以帮助我

 { "parent_id":"", "id":"DISTRIBUTOR1", "permission":"Granted", "country_code":"INDIA" } 2. { "parent_id":"", "id":"DISTRIBUTOR1", "permission":"Granted", "country_code":"United States" } 

您可以拆分包含的国家和映射新的对象。

 var data = {"Distrubutor":"DISTRIBUTOR1","INCLUDE":"INDIA,United States","EXCLUDE":"KARNATAKA-INDIA,CHENNAI-TAMILNADU-INDIA","PARENT-ID":""}, include = data.INCLUDE.split(',').map(function (a) { return { parent_id: "", id: data.Distrubutor, permission: "Granted", country_code: a }; }); console.log(include); 
 .as-console-wrapper { max-height: 100% !important; top: 0; } 

你可以尝试这样的事情:

 var obj = {"Distrubutor":"DISTRIBUTOR1","INCLUDE":"INDIA,United States","EXCLUDE":"KARNATAKA-INDIA,CHENNAI-TAMILNADU-INDIA","PARENT-ID":""} // Keys that does not need to be in returned object var ignoreKeys = ["EXCLUDE", "INCLUDE"]; var tmp = Object.assign({}, obj) // Delete all keys that are not required ignoreKeys.forEach(function(key){ delete tmp[key] }) var result = obj.INCLUDE.split(',').map(function(country){ return Object.assign({}, tmp, {"country_code": country, "permission": "GRANTED"}) }) console.log(result) 

这是解决当前问题的另一种方法,也可以回答可能的新问题“你怎么能使它更复杂”

 class PropertyAdapter { *populate(target, option){} } class DistrubutorAdapter extends PropertyAdapter { *populate(target, option){ target.id = option; yield target; } } class ParentIdAdapter extends PropertyAdapter { *populate(target, option){ target.parent_id = option; yield target; } } class IncludeAdapter extends PropertyAdapter { *populate(target, option){ option = option.split(/,/g).map(x=>x.trim()).filter(x=>!!x.length); for(let v of option){ let obj = Instantinator.copy(target); obj.country_code = v; yield obj; } } } class Instantinator { static create(){ return {permission: 'Granted'}; } static copy(src){ return Object.assign({}, src); } } const ADAPTERS = new Map(); class ObjectFactory { static register(prop, adapter){ ADAPTERS.set(prop, adapter); } static create(options){ const pairs = Object.keys(options||{}) .filter(key => ADAPTERS.has(key)) .map(key=> ({value: options[key], adapter: ADAPTERS.get(key)})); let result = [Instantinator.create()]; for(let pair of pairs){ result = result.reduce((prev, cur) => prev.concat([...pair.adapter.populate(cur, pair.value)]), []); } return result; } } ObjectFactory.register('Distrubutor', new DistrubutorAdapter()); ObjectFactory.register('PARENT-ID', new ParentIdAdapter()); ObjectFactory.register('INCLUDE', new IncludeAdapter()); var options = { "Distrubutor":"DISTRIBUTOR1", "INCLUDE":"INDIA,United States", "EXCLUDE":"KARNATAKA-INDIA,CHENNAI-TAMILNADU-INDIA", "PARENT-ID":"" }; console.log(ObjectFactory.create(options)); 
 .as-console-wrapper { max-height: 100% !important; top: 0; }