我有一组看起来像
的JavaScript词典my_dictionary = [
{"first_thing": "1"},
{"second_thing": "2"}
]
,但需要看起来像
my_dictionary = [
{key: "first_thing", value: "1"},
{key: "second_thing", value: "2"}
]
。由于这些词典中有这么多,我需要一种方法来迭代它们并更改所有词典,以便它们将key
和value
置于其中。
我尝试过迭代,并尝试使用my_dictionary[0].key
以及my_dictionary[0][0]
之类的东西来选择它们,我希望它能起作用,但我想这不是这样做的方法。< / p>
答案 0 :(得分:2)
由于所有转换都发生在元素中,我喜欢使用[] .map():
[{"first_thing": "1"}, {"second_thing":"2"}].map(function(o){
var o2={};
Object.keys(o).forEach(function(k){o2.key=k; o2.value=o[k];});
return o2;
});
// == [{"key":"first_thing","value":"1"},{"key":"second_thing","value":"2"}]
答案 1 :(得分:0)
只需遍历字典并修改每个元素:
for (var index = 0; index < my_dictionary.length; index++) {
var element = my_dictionary[index],
key, value;
// Grab the initial element
for (var tempKey in element) {
if (element.hasOwnProperty(tempKey)) {
key = tempKey;
value = element[tempKey];
break;
}
}
// Reset the element
element = { "key": key, "value": value };
}
它不是最优雅的解决方案,但它确实有效。
答案 2 :(得分:0)
这是使用jQuery.each()
的简单解决方案 var result = [];
var my_dictionary = [{"first_thing": "1"}, {"second_thing":"2"}];
$.each(my_dictionary, function(index, element) {
$.each(element, function(key, value) {
result.push({"key" : key, "value" : value});
});
});
答案 3 :(得分:-1)
您可以使用for..in
无副作用
var dict_in = [{"first_thing": "1"}, {"second_thing": "2"}];
var dict_out = (function (arr) {
var d = [], i, k;
d.length = arr.length;
for (i = 0; i < arr.length; ++i)
for (k in arr[i]) {
d[i] = {'key': k, 'value': arr[i][k]};
break;
}
return d;
}(dict_in));
dict_out; // [{key: "first_thing", value: "1"}, {key: "second_thing", value: "2"}]
副作用
var dict_in = [{"first_thing": "1"}, {"second_thing": "2"}];
(function (arr) {
var i, k, v;
for (i = 0; i < arr.length; ++i)
for (k in arr[i]) {
v = arr[i][k];
delete arr[i][k];
arr[i].key = k;
arr[i].value = v;
break;
}
return arr;
}(dict_in)); // [{key: "first_thing", value: "1"}, {key: "second_thing", value: "2"}]