需要帮助。
我有["wt=WLw","V5=9jCs","7W=71X","rZ=HRP9"]
字符串(无限数量的对)
我需要创建一个数组,其中包含wT
(作为索引)和WLw
作为值,对于整个字符串(或更简单wT
作为index0,WLw
作为索引1等)
我正在尝试用JavaScript做,但我不知道如何完成这项任务。
非常感谢你的帮助!!
答案 0 :(得分:3)
您不能将字符串作为数组中的索引,您想要的是对象。
您需要做的就是遍历数组,将每个值分成2个项目(键和值),然后将它们添加到对象中。
示例:
// output is an object
var output = {};
var source = ["wt=WLw","V5=9jCs","7W=71X","rZ=HRP9"];
for (var index = 0; index < source.length; index++) {
var kvpair = source[index].split("=");
output[kvpair[0]] = kvpair[1];
}
如果你想要一个数组数组,那么它的过程大致相同,只需将每一对推送到输出对象
// output is a multidimensional array
var output = [];
var source = ["wt=WLw","V5=9jCs","7W=71X","rZ=HRP9"];
for (var index = 0; index < source.length; index++) {
output.push(source[index].split("="));
}
更新如果您的来源实际上是一个字符串而不是一个数组,那么您将需要进行更多分割才能使其正常工作
var output = {};
var sourceText = "[\"wt=WLw\",\"V5=9jCs\",\"7W=71X\",\"rZ=HRP9\"]";
// i have escaped the quotes in the above line purely to make my example work!
var source = sourceText.replace(/[\[\]]/g,"").split(",");
for (var index = 0; index < source.length; index++) {
var kvpair = source[index].split("=");
output[kvpair[0]] = kvpair[1];
}
更新2
如果你想要的输出是一个数组数组而不是一个包含键值对的对象,那么你需要做一些像@limelights的回答。
具有键值对的对象:var myObject = { "key1": "value1", "key2": "value2" };
使用上面的代码,您可以像myObject["key1"]
或myObject.key1
数组:var myArray = [ [ "key1", "value1"] ,[ "key2", "value2" ] ];
使用此代码,您无法通过“密钥”访问数据(没有循环遍历整个批次以便首先找到它)。在这种形式中,“key1”和“value1”实际上都是值。
获取“value1”你会做myArray[0][1]
或者你可以使用中间数组来访问该对:
var pair = myArray[0];
> pair == ["key1", "value1"]
> pair[0] == "key1"
> pair[1] == "value1"
您可以对两种类型的结果使用a进行每个循环
// array of arrays
var data = [ [ "hello", "world"], ["goodbye", "world"]];
data.forEach(function(item) {
console.log(item[0]+" "+item[1]);
});
> Hello World
> Goodbye World
// object (this one might not work very well though)
var data = { "hello": "world", "goodbye": "world" };
Object.keys(data).forEach(function(key) {
console.log(key+" "+data[key]);
});
> Hello World
> Goodbye World
答案 1 :(得分:2)
正常for loop
在这里完美无缺!
var list = ["wt=WLw","V5=9jCs","7W=71X","rZ=HRP9"];
var pairs = [];
for(var i = 0; i < list.length; i++){
pairs.push(list[i].split('='));
}
这会给你一组对,我猜你想要的。
否则只需摆脱外部数组并执行list[i].split('=');
如果你想将它放入一个物体,即。不是数组
var pairObject = {};
for(var i = 0; i < list.length; i++){
var pair = list[i].split('=');
pairObject[pair[0]] = pair[1];
}