【发布时间】:2019-06-15 14:39:47
【问题描述】:
我必须在下面解决这个问题。输出应该是一个对象映射,其中键作为排序值,所有其他变体作为分配给排序键的数组。我能够将值生成为字符串,但不能生成为包含所有值的数组。有什么指点吗?
var list = ['ab', 'cd', 'acb', 'dc', 'ba', 'abc', 'cba', 'bca'];
var oMap = {};
var pairs = [];
for(var i=0; i <list.length; i++){
var temp = sortstr(list[i]);
oMap[temp] = {};
if(temp in oMap){
if(temp === sortstr(list[i])){
oMap[temp] = temp + "," + list[i]; --> should store in array
}
}
else {
oMap[temp] = {};
oMap[temp] = list[i];
}
}
console.log(oMap);
function sortstr(text) {
return text.split('').sort().join('');
};
预期输出:
{ab: [ab,ba], cd: [cd,dc], abc: [abc,bca,acb,cba] }
实际输出:
{ab: "ab,ba", cd: "cd,dc", abc: "abc,bca"}
【问题讨论】:
-
发布的代码没有明显尝试创建数组。究竟是什么问题?
-
如果我尝试将此行存储在
array oMap[temp] = temp + "," + list[i];中,则获取数组中的所有值,就像oMap[temp] = pairs.push(list[i]);一样
标签: javascript arrays string sorting