js 数组问题 ..待解决................. var A=["尺寸: 4 GB", "颜色: 蓝黑", "尺寸: 16 GB", "颜色: 黑红", "尺寸: 8 GB", "颜色: 白黑", "尺寸: 32 GB"] ;var B=["尺寸:4GB,16GB,8GB,32GB","颜色:蓝黑,黑红,白黑"]根据A数组 得到B数组,谁有比较好的方法js数组Array 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 var A=["尺寸: 4 GB", "颜色: 蓝黑", "尺寸: 16 GB", "颜色: 黑红", "尺寸: 8 GB", "颜色: 白黑", "尺寸: 32 GB"];var B= ["尺寸:4GB,16GB,8GB,32GB","颜色:蓝黑,黑红,白黑"];var C = [["尺寸:"],["颜色:"]];for( var i=0; i<A.length; i++ ){ var u = A[i], ar = u.split(':'); ar[0]+':' === C[0][0] && C[0].push(trim(ar[1])), ar[0]+':' === C[1][0] && C[1].push((ar[1]));}C[0] = C[0].join(',')C[1] = C[1].join(',')console.log(C)function trim(s){ return s.replace(/(^ +| +$)/ig,'')} 不建议写死参数:<script type="text/javascript"> var A=["尺寸: 4 GB", "颜色: 蓝黑", "尺寸: 16 GB", "颜色: 黑红", "尺寸: 8 GB", "颜色: 白黑", "尺寸: 32 GB"]; //var A=["尺寸: 4 GB", "颜色: 蓝黑", "尺寸: 16 GB", "颜色: 黑红", "尺寸: 8 GB", "颜色: 白黑", "尺寸: 32 GB","其他: 神马东西"]; var temp={},B=[]; for(var i= A.length-1;i>=0;i--){ var arr=A[i].split(": "); if(temp[arr[0]]){ temp[arr[0]]+=","+arr[1]; }else{ temp[arr[0]]=arr[1]; } } for(var k in temp){ B.push(k+":"+temp[k]); } console.log(B); //var B= ["尺寸:4GB,16GB,8GB,32GB","颜色:蓝黑,黑红,白黑"];</script> 好优雅的代码,没看回复自己写了个,是否太笨重了:var a=["尺寸: 4 GB", "颜色: 蓝黑", "尺寸: 16 GB", "颜色: 黑红", "尺寸: 8 GB", "颜色: 白黑", "尺寸: 32 GB"] ; var c=[]; a.forEach(function(item){ insertIntoC(item,c); }); alert(c); function insertIntoC(value, target){ var trim=value.replace(' ',''); var splits=trim.split(':'); var index=checkExistKey(splits[0],c); if(index !== -1){ c[index]=c[index]+','+splits[1]; } else{ c[c.length]=trim; } }; function checkExistKey(key, array){ var index=-1; array.forEach(function(item,ind){ if(item.indexOf(key) === 0){ index = ind; } }) return index; } function E( x ){console.log( x );};var a=["尺寸: 4 GB", "颜色: 蓝黑", "尺寸: 16 GB", "颜色: 黑红", "尺寸: 8 GB", "颜色: 白黑", "尺寸: 32 GB"];function select( al ){ var _a = [], _b = [], _tmp; for(var i = 0 , len = al.length; i < len; i++){ _tmp = al[ i ].replace( /\n/ , "" ).split(":")[ 1 ]; if( i % 2 ){ _b.push( _tmp ); } else { _a.push( _tmp ); }; }; return ( [ "尺寸:" + _a.join(",") , "颜色:" + _b.join(",") ] );};E( select( a ) ); var A=["尺寸: 4 GB", "颜色: 蓝黑", "尺寸: 16 GB", "颜色: 黑红", "尺寸: 8 GB", "颜色: 白黑", "尺寸: 32 GB","材料:金属"]; var t = [];final = [],keys={},k=0; for(var i=0,j=A.length;i<j;i++){ t = A[i].split(/\s*:\s*/); if(typeof keys[t[0]] == "undefined"){ final[k] = t[0]+":"+t[1]; keys[t[0]] = k++; } else final[keys[t[0]]] += ','+t[1] } console.log(final) 個人覺得這種方式很好,只要封裝一下組成函數,那麼只要傳一個參數就行了,能一本萬利.不過建議var arr=A[i].split(": ");還是截取下兩邊的空格好點 var A=["尺寸: 4 GB", "颜色: 蓝黑", "尺寸: 16 GB", "颜色: 黑红", "尺寸: 8 GB", "颜色: 白黑", "尺寸: 32 GB"];function finArr (arr,str) {//判断arr数组中时候有str字符串 for (var i = 0; i < arr.length; i++) { if(arr[i]==str){ return true; } }; return false;}var c=[],tempArr=[],result=[];for (var i = 0; i < A.length; i++) { c[i]=A[i].split(':');//用c[]接受A数组切完的数组}for (var i = 0; i < c.length; i++) { if (!finArr(tempArr,c[i][0])) {//用tempArr判断需要循环的属性 tempArr.push(c[i][0]); var tempStr=c[i][0];//用来存临时的属性值 for (var j = i; j < c.length; j++) { if (c[j][0]==c[i][0]) { tempStr+=c[j][1]; }; }; result.push(temp); };}; var A=["尺寸: 4 GB", "颜色: 蓝黑", "尺寸: 16 GB", "颜色: 黑红", "尺寸: 8 GB", "颜色: 白黑", "尺寸: 32 GB"] ;var save={};for(var i=0,len=A.length;i<len;i++){ var item=A[i].split(':'); if(save[item[0]]) save[item[0]].push(item[1].replace(/ /g,'')); else save[item[0]]=[item[1].replace(/ /g,'')];}var B=[]; for(var key in save) { if(save.hasOwnProperty(key)) B.push(key+':'+save[key].join(','));}console.log(B); 搜索引擎的结果展示。 ==========PHP DIV========== 如何转成金钱格式 新手菜鸟问题 removeChild方法,参数无效??? 急!求 用javascript 通过 xml 结构 生成 树形菜单 如何获得网页中链接js的代码 关于窗口获取焦点问题。 高分跪求阿信树的jsp实现例子,不要太复杂,在线等待,谢谢各位大侠了 jquery 操作checkbox javascript如何实现两个不同页面链接到同一页面,再点击此页面的同一按钮返回各自页面,在线等 js 正则表达式问题 匹配非负数字
for( var i=0; i<A.length; i++ ){
var u = A[i],
ar = u.split(':');
ar[0]+':' === C[0][0] && C[0].push(trim(ar[1])),
ar[0]+':' === C[1][0] && C[1].push((ar[1]));
}C[0] = C[0].join(',')
C[1] = C[1].join(',')
console.log(C)
function trim(s){
return s.replace(/(^ +| +$)/ig,'')
}
var A=["尺寸: 4 GB", "颜色: 蓝黑", "尺寸: 16 GB", "颜色: 黑红", "尺寸: 8 GB", "颜色: 白黑", "尺寸: 32 GB"];
//var A=["尺寸: 4 GB", "颜色: 蓝黑", "尺寸: 16 GB", "颜色: 黑红", "尺寸: 8 GB", "颜色: 白黑", "尺寸: 32 GB","其他: 神马东西"];
var temp={},B=[];
for(var i= A.length-1;i>=0;i--){
var arr=A[i].split(": ");
if(temp[arr[0]]){
temp[arr[0]]+=","+arr[1];
}else{
temp[arr[0]]=arr[1];
}
}
for(var k in temp){
B.push(k+":"+temp[k]);
}
console.log(B);
//var B= ["尺寸:4GB,16GB,8GB,32GB","颜色:蓝黑,黑红,白黑"];
</script>
好优雅的代码,没看回复自己写了个,是否太笨重了:var a=["尺寸: 4 GB", "颜色: 蓝黑", "尺寸: 16 GB", "颜色: 黑红", "尺寸: 8 GB", "颜色: 白黑", "尺寸: 32 GB"] ;
var c=[];
a.forEach(function(item){
insertIntoC(item,c);
});
alert(c); function insertIntoC(value, target){
var trim=value.replace(' ','');
var splits=trim.split(':');
var index=checkExistKey(splits[0],c);
if(index !== -1){
c[index]=c[index]+','+splits[1];
}
else{
c[c.length]=trim;
}
}; function checkExistKey(key, array){
var index=-1;
array.forEach(function(item,ind){
if(item.indexOf(key) === 0){
index = ind;
}
}) return index;
}
function E( x ){console.log( x );};
var a=["尺寸: 4 GB", "颜色: 蓝黑", "尺寸: 16 GB", "颜色: 黑红", "尺寸: 8 GB", "颜色: 白黑", "尺寸: 32 GB"];
function select( al ){
var _a = [],
_b = [],
_tmp;
for(var i = 0 , len = al.length; i < len; i++){
_tmp = al[ i ].replace( /\n/ , "" ).split(":")[ 1 ];
if( i % 2 ){
_b.push( _tmp );
} else {
_a.push( _tmp );
};
};
return ( [ "尺寸:" + _a.join(",") , "颜色:" + _b.join(",") ] );
};
E( select( a ) );
var t = [];final = [],keys={},k=0;
for(var i=0,j=A.length;i<j;i++){
t = A[i].split(/\s*:\s*/);
if(typeof keys[t[0]] == "undefined"){
final[k] = t[0]+":"+t[1];
keys[t[0]] = k++;
}
else final[keys[t[0]]] += ','+t[1]
}
console.log(final)
個人覺得這種方式很好,只要封裝一下組成函數,那麼只要傳一個參數就行了,能一本萬利.
不過建議var arr=A[i].split(": ");還是截取下兩邊的空格好點
function finArr (arr,str) {//判断arr数组中时候有str字符串
for (var i = 0; i < arr.length; i++) {
if(arr[i]==str){
return true;
}
};
return false;
}
var c=[],tempArr=[],result=[];
for (var i = 0; i < A.length; i++) {
c[i]=A[i].split(':');//用c[]接受A数组切完的数组
}
for (var i = 0; i < c.length; i++) {
if (!finArr(tempArr,c[i][0])) {//用tempArr判断需要循环的属性
tempArr.push(c[i][0]);
var tempStr=c[i][0];//用来存临时的属性值
for (var j = i; j < c.length; j++) {
if (c[j][0]==c[i][0]) {
tempStr+=c[j][1];
};
};
result.push(temp);
};
};
var A=["尺寸: 4 GB", "颜色: 蓝黑", "尺寸: 16 GB", "颜色: 黑红", "尺寸: 8 GB", "颜色: 白黑", "尺寸: 32 GB"] ;
var save={};
for(var i=0,len=A.length;i<len;i++){
var item=A[i].split(':');
if(save[item[0]])
save[item[0]].push(item[1].replace(/ /g,''));
else
save[item[0]]=[item[1].replace(/ /g,'')];
}
var B=[];
for(var key in save) {
if(save.hasOwnProperty(key))
B.push(key+':'+save[key].join(','));
}
console.log(B);