2014-09-22 4 views
2

Привет У меня есть ниже элемент массиваэлементы разделения массива в JavaScript функция разделения

массив вар = [ "a.READ", "b.CREATE"]

Пытаюсь разделите элементы на основе "." Использование JavaScript разделения метод

ниже мой код

var array1=new Array(); 
var array2 = new Array(); 

for (var i = 0; i < array .length; i++) { 
    array1.push(array [i].split(".")); 
} 
console.log("this is the array1 finish ----"+array1) 

из положить, что я получаю это

[["a","READ"],["b","CREATE"]] 

Ожидаемый результат, что я хочу

array1 =["a","b"] 

array2=["READ","CREATE"] 

I 'm застрял здесь любое решение в отношении этого очень полезно

ответ

0

Вы ничего не добавляете к массиву2. Пожалуйста, используйте индексы правильно, как показано ниже:

var array1=new Array(); 
var array2 = new Array(); 

for (var i = 0; i < array .length; i++) { 
    array1.push(array [i].split(".")[0]); 
    array2.push(array [i].split(".")[1]); 
} 
+0

spliting 2 раза это не очень хорошая идея, я Думаю, – sadrzadehsina

5

Вам нужно добавить в массив2 и использовать оба элемента из возвращенного массива, String.prototype.split возвращается - т.е. 0 является левая и 1 правая часть точки ,

var array = ["a.READ", "b.CREATE"] 
var array1 = []; // better to define using [] instead of new Array(); 
var array2 = []; 

for (var i = 0; i < array.length; i++) { 
    var split = array[i].split("."); // just split once 
    array1.push(split[0]); // before the dot 
    array2.push(split[1]); // after the dot 
} 
console.log("array1", array1); 
console.log("array2", array2); 
+0

Просто предложение используйте ',' в 'console.log (" array1 ", array1);' это покажет объект – Satpal

+0

@Satpal Хороший отзыв. – Adam

0

вы можете сделать что-то вроде этого

var array =["a.READ","b.CREATE"]; 
var arr1= [], arr2= []; 

array.forEach(function(item,index,arr){ 
    item.split('.').forEach(function(item,index,arr){ 
    if(index % 2 === 0){ 
     arr1.push(item); 
    }else{ 
     arr2.push(item); 
    } 
    });  
}); 

console.log(arr1); 
console.log(arr2); 

DEMO

-1

Использование этого:

for (var i = 0; i < array .length; i++) { 
    var parts = array[i].split('.'); 
    array1.push(parts[0]); 
    array2.push(parts[1]); 
} 
-1

Вы не назначили никакого значения array2. Вы можете сделать, как показано ниже.

var array1=[]; 
var array2 = []; 

for (var i = 0; i < array .length; i++) { 
    var arrayTemp=[]; 
    arrayTemp.push(array [i].split(".")); 
    array1.push(arrayTemp[0]);   
    array2.push(arrayTemp[1]); 
} 
0

Я думаю, это немного избыточно, но метод split фактически возвращает и массив. Хотя ваш код отключен, вы не изменяли массив2. Рассмотрим следующее.

var array = [ "a.READ" , "b.CREATE" ] 
    , array1 = [] 
    , array2 = [] 
    // cache array length 
    , len = array.length; 

for (var i = 0; i < len; i++) { 
    // the split method returns a new array 
    // so we will cache the array 
    // push element 0 to array1 
    // push element 1 to array2 
    var newArr = array[ i ].split('.'); 
    array1.push(newArr[ 0 ]); 
    array2.push(newArr[ 1 ]); 
} 

console.log('array1: ', array1); 
console.log('array2: ', array2); 
0

Мы начнем с общей transpose функции для двумерных массивов:

function transpose(arr1) {    // to transpose a 2d array 
    return arr1[0].map(     // take the first sub-array and map 
     function(_, i) {     // each element into 
      return arr1.map(   // an array which maps 
       function(col) {   // each subarray into 
        return col[i];  // the corresponding elt value 
       } 
      ); 
     } 
    ); 
} 

Теперь решение просто

transpose(      // transpose the two-dimensional array 
    array.map(     // created by taking the array and mapping 
     function(e) {    // each element "a.READ" into 
      return e.split('.'); // an array created by splitting it on '.' 
     } 
    ) 
) 
Смежные вопросы