如何在JavaScript中组合以相同文本开头的数组元素?
我有一个名为ItemArray的数组,其元素如下如何在JavaScript中组合以相同文本开头的数组元素?,javascript,jquery,arrays,Javascript,Jquery,Arrays,我有一个名为ItemArray的数组,其元素如下 ItemArray[0]='44@Man' ItemArray[1]='45@Cotton' ItemArray[2]='44@Woman' 我想要的新数组应该是NewItemArray,如下所示 以下是一些提示: 您需要创建从数字到关联字符串的中间映射 JS对象是非常好的映射 使用.split在@符号处拆分原始字符串 @前面的数字可以是地图的键 使用字符串数组作为映射中的值 如果您完成了所有这些操作,您应该得到一个包含以下内容的对象: var
ItemArray[0]='44@Man'
ItemArray[1]='45@Cotton'
ItemArray[2]='44@Woman'
我想要的新数组应该是NewItemArray,如下所示
以下是一些提示:
您需要创建从数字到关联字符串的中间映射
JS对象是非常好的映射
使用.split在@符号处拆分原始字符串
@前面的数字可以是地图的键
使用字符串数组作为映射中的值
如果您完成了所有这些操作,您应该得到一个包含以下内容的对象:
var tmpObj = {
44: ['Man', 'Woman'],
45: ['Cotton']
};
您需要在上面迭代以创建新数组
使用.join组合字符串数组,每个元素之间使用分隔符
Fiddle:展示您的尝试,我们不是免费的代码编写服务。@Archer这是您编写答案的方式,可以提供信息和教育,而不必泄露代码。
var tmpObj = {
44: ['Man', 'Woman'],
45: ['Cotton']
};
var ItemArray = [];
ItemArray[0]='44@Man'
ItemArray[1]='45@Cotton'
ItemArray[2]='44@Woman'
// create intermediate array of objects
var aux = {};
$.each(ItemArray, function(idx, val){
var key = val.split("@");
// e.g key : ['44', 'Man']
if (!aux[key[0]]){
aux[key[0]] = [];
}
aux[key[0]].push(key[1]);
});
console.log(aux);
/* aux looks like this:
{
44 : ['Man', 'Woman'],
45 : ['Cotton']
}
*/
// create final array based on the previous temporary array
var NewItemArray = [];
$.each(aux, function(idx, val){
NewItemArray.push(idx + '@' + val.join("#"));
});
console.log(NewItemArray)