2015-12-14 2 views
-3

Я получаю данные в виде объекта. этот объект содержит свойства, в которых три ключа содержат значения массива. Я хочу подтолкнуть эти три массива к одному хозяину Array. Но должно быть в предпочтительной последовательности. КакКак получить предпочтительный массив, нажатый в javascript

var obj = {'type':['a','b'],'power':[500,700],'make':['2012','2015']} 
oneArray(obj,'make','type','power') 

Мастер Array должен иметь первый, «типа» «сделать», а затем «власть» ключи Array от объекта. Сейчас он приходит в порядке, который приведен в obj Fidde

var obj = {'type':['a','b'],'power':[500,700],'make':['2012','2015']} 

var oneArray = function (obj,first,second,third){ 
var newObj = obj; 
var list = []; 
for(var key in newObj){ 
if (newObj[key] instanceof Array) { 
      if (!list) { 
      list = newObj[key]; 
      } 
      else { 
      list = list.concat(newObj[key]); 
      } 

     } 
} 
newObj['all'] = list; 
return newObj 
} 

console.log(oneArray(obj,'make','type','power')) 
+1

'return {all: obj.make.concat (obj.type) .concat (obj.power)}' ...!? – deceze

ответ

0

Я не уверен, что понял ваш вопрос, но попробуйте это ... Эта функция OnArray() принимает параметры, указывающие приоритеты в упорядоченный, но первый параметр.

var obj = {'type':['a','b'],'power':[500,700],'make':['2012','2015']} 

var oneArray = function(obj) { 
    var newObj = obj; 
    var list = []; 
    var priorityList = arguments; 

    for(var i = 1 ; i < priorityList.length ; i++) { 
     if(newObj[ priorityList[i] ] instanceof Array) { 
      for(var key in newObj[ priorityList[i] ]) { 
       list.push(newObj[ priorityList[i] ][ key ]); 
      } 
     } 
    } 

    newObj['all'] = list; 
    return newObj; 
} 

console.log(oneArray(obj,'make','type','power')); 
+0

Этот код является своего рода образцом. Вы должны добавить в него некоторую логику проверки, если вы хотите использовать это в рабочей среде ... – jake

Смежные вопросы