0

需要帮助。我有类似的字符串["wt=WLw","V5=9jCs","7W=71X","rZ=HRP9"](无限数量的对)

我需要为整个字符串(或更简单的 index0、索引 1 等)创建一个数组,其中包含对wT(作为索引)和值,我正在尝试在 JavaScript 中执行此操作,但我无法弄清楚如何来完成这个任务。WLwwTWLw

非常感谢您的帮助!!

4

2 回答 2

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 answer 的操作。

具有键值对的对象:var myObject = { "key1": "value1", "key2": "value2" };

使用上面的代码,您可以像这样访问“value1”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"

您可以对两种类型的结果使用 for each 循环

// 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
于 2013-04-11T13:04:36.103 回答
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];
}
于 2013-04-11T13:06:55.683 回答