我有2個字符串這樣seprate值
var a= '12,13,14,15,16';
var b='p,q,q,p,q';
我只需要這樣的12,15表示對 和13,14,16表示q
我怎樣才能做到這一點jQuery的/ JavaScript的。
我有2個字符串這樣seprate值
var a= '12,13,14,15,16';
var b='p,q,q,p,q';
我只需要這樣的12,15表示對 和13,14,16表示q
我怎樣才能做到這一點jQuery的/ JavaScript的。
簡單,因爲這:
var a= '12,13,14,15,16';
var b='p,q,q,p,q';
var pValues=[], qValues=[]; //where to store the results
b.split(',').forEach(function(value, index){ //split the values from the b var
var aa=a.split(','); //split the values from the a var
if(value=='p') pValues.push(aa[index]);
if(value=='q') qValues.push(aa[index]);
});
console.log("pValues: "+pValues);
console.log("qValues: "+qValues);
var a = '12,13,14,15,16';
var b = 'p,q,q,p,q';
var as = a.split(",");
var bs = b.split(",");
if(as.length == bs.length)
{
var map = {};
for(var i = 0; i < as.length; ++i)
{
var asv = as[i];
var bsv = bs[i];
map[asv] = bsv;
}
console.log(map['13']); //q
}
或:
var a = '12,13,14,15,16';
var b = 'p,q,q,p,q';
var as = a.split(",");
var bs = b.split(",");
if(as.length == bs.length)
{
var map = {};
as.map(function(asv,idx){
return {asv:asv, bsv:bs[idx]};
})
.forEach(function(x){
map[x.asv] = x.bsv;
});
console.log(map['13']); //q
}
在回答您的意見,也許這樣的事情會更好:
var a = '12,13,14,15,16';
var b = 'p,q,q,p,q';
var as = a.split(",");
var bs = b.split(",");
if(as.length == bs.length)
{
var map = {};
as.map(function(asv,idx){
return {asv:asv,bsv:bs[idx]};
})
.forEach(function(x){
if(!map[x.bsv])
{
map[x.bsv]=[];
}
map[x.bsv].push(x.asv);
});
console.log(map['q']); //["13", "14", "16"]
console.log(map['q'].join(",")); //"13,14,16"
}
var a= '12,13,14,15,16';
var b='p,q,q,p,q';
function getRepresentative(srcA, srcB, valA)
{
var mapIndexA = srcA && srcA.split(',').indexOf(valA);
var mapB = srcB.split(',');
return mapB && mapB[mapIndexA] || -1;
}
console.log(getRepresentative(a,b, '15'));
該函數返回-1,如果A和B之間不存在對應的地圖被發現..
以下函數採用兩個字符串,並用逗號分割它們,然後逐個遍歷符號 - 令牌對。每當發現一個新符號時,它將被添加到symbols
,並將一個空數組添加到symbolToNumbers
,以便可以將該符號的數字推送到該數組上。
最後,我們可以遍歷symbols
來顯示每個符號的數字列表。此代碼適用於各種符號,而不僅僅是'p'和'q'。
function findElements(numbers, symbols) {
var numberTokens = numbers.split(','),
symbolTokens = symbols.split(','),
symbolToNumbers = {},
symbols = [],
n = numberTokens.length;
if (n != symbolTokens.length) {
console.log('error: the lists must have the same length');
return;
}
for (var i = 0; i < n; ++i) {
var number = numberTokens[i],
symbol = symbolTokens[i];
if (symbolToNumbers[symbol] === undefined) {
symbols.push(symbol);
symbolToNumbers[symbol] = [];
}
symbolToNumbers[symbol].push(number);
}
for (var i = 0; i < symbols.length; ++i) {
var symbol = symbols[i],
numbers = symbolToNumbers[symbol];
console.log(symbol+': '+numbers.join(', '));
}
}
var a = '12,13,14,15,16';
var b = 'p,q,q,p,q';
findElements(a, b);
查看此代碼上的jsfiddle運行:http://jsfiddle.net/0e1g2ryf/1/
這背後的邏輯。獲得前兩個值,其餘的? – vaso123 2014-11-21 10:19:07
@lolka_bolka index in a = index in b – Vladimirs 2014-11-21 10:19:29
我只想分離p和q's.their對應的數字也可以在var a = '12,13,14,15,16'; – aniltc 2014-11-21 10:20:55