2014-09-17 7 views
-1
var objectHTMLCollection = document.getElementsByTagName("select"), 
string = [].map.call(objectHTMLCollection, function(node){ 
    return node.id || ""; 
}).join(" "); 

У меня есть этот код, который преобразует [object HTMLCollection] в строку, которую я хочу превратить в массив. Так говорят, что выход был hello world I am here бы стать [hello,world,I,am,here]превращение строки в массив

+2

Не '[] .map.call' уже возвращает массив, и вы просто сделать это строка с' .join (»«) '? – Spokey

ответ

2

Вы можете использовать split(" ")

var stringArray = string.split(" "); 

ИЛИ вы можете подготовить массив при подготовке строки см ниже код

var stringArray = new Array(); 
var objectHTMLCollection = document.getElementsByTagName("select"), 
string = [].map.call(objectHTMLCollection, function(node){ 
    stringArray.push(node.id); 
    return node.id || ""; 
}).join(" "); 
+1

должен быть 'push' вместо' put' –

+0

О да ... простите, мой плохой. Исправлено сейчас, спасибо @RussCam –

1

Карта уже возвращает массив. Не нужно превращать его в строку, а затем обратно в массив.

var objectHTMLCollection = document.getElementsByTagName("select"), 
 
idarray = [].map.call(objectHTMLCollection, function(node){ 
 
    return node.id || ""; 
 
}), string = idarray.join(' '); 
 

 
document.write('<div>String: ' + string + '<div>'); 
 
document.write('Array: ' + JSON.stringify(idarray) + '<div>');
<select id='dsada1'></select> 
 
<select id='dsada2'></select> 
 
<select></select> 
 
<select id='dsada4'></select> 
 
<select id='dsada5'></select> 
 
<select id='dsada6'></select> 
 
<br/><br/>

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