在JavaScript中将字符串数组转换为名称/值对象

3

我目前正在处理一个Web服务,该服务向客户端返回字符串数组。现在我想将这个字符串数组转换成一个对象,为每个字符串赋予一个名称,以便以后引用。

所以我们从这里开始:

var result = ["test", "hello", "goodbye"];

我希望最终能够得到这样的结果:

var final = [{'value': "test"}, {'value': "hello"}, {'value': "goodbye"}];

我使用jquery,有没有简单的方法可以实现这个功能?

4个回答

7
var final = $.map(result, function(val) {
    return { value: val };
});

或者您可以使用ES5替代方案

var final result.map(function(val) {
    return { value: val };
});

或者采用简单的迭代方式。
var final = [];
for (var i = 0, ii = result.length; i < ii; i++) {
    final.push({ value: result[i] });
}

4
我认为这里不必使用jQuery。
var result = ["test", "hello", "goodbye"];
var final = [];
for(var i = 0; i < result.length; i++) {
    final.push({value: result[i]})
}

使用 for(i in result) 可以用更少的输入得到相同的答案。 - Bryce Siedschlaw
1
@Bryce Siedschlaw:小心处理,原型函数也会突然出现在数组中。 - pimvdb
嗯,有趣。我想会有一个限制条件。 - Bryce Siedschlaw

2
您可以尝试以下方法:
var input = ["one", "two", "three"], 
    output = [],
    obj;

for (var i = 0; i < input.length; i++)
{
    obj = { "value" : input[i] };

    output.push(obj);

}

链接到 fiddle


2
我还没有测试过,但你可以这样做: $(result).map(function(){return {'value':this}});

尝试这样写:var result = $(result).map(function() { return {'value': this}; }); - namuol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接