我有對象的數組作爲如何將對象數組轉換爲JavaScript中的一個對象?
[Object { key="11", value="1100", $$hashKey="00X"}, Object { key="22", value="2200", $$hashKey="018"}]
如何將其轉換成由JavaScript
{"11":"1000", "22":"2200"}
我有對象的數組作爲如何將對象數組轉換爲JavaScript中的一個對象?
[Object { key="11", value="1100", $$hashKey="00X"}, Object { key="22", value="2200", $$hashKey="018"}]
如何將其轉換成由JavaScript
{"11":"1000", "22":"2200"}
你可能在尋找這樣的事情:
// original
var arr = [
{key : '11', value : '1100', $$hashKey : '00X' },
{key : '22', value : '2200', $$hashKey : '018' }
];
//convert
var result = {};
for (var i=0; i<arr.length; i++) {
result[arr[i].key] = arr[i].value;
}
//result
console.log(result);
在這裏你去:
var arr = [{ key: "11", value: "1100" }, { key: "22", value: "2200" }];
var result = {};
for (var i=0, len=arr.length; i < len; i++) {
result[arr[i].key] = arr[i].value;
}
console.log(result); // {11: "1000", 22: "2200"}
以下是如何動態地接受以上的字符串,並將其插值到一個對象:
var stringObject = '[Object { key="11", value="1100", $$hashKey="00X"}, Object { key="22", value="2200", $$hashKey="018"}]';
function interpolateStringObject(stringObject) {
var jsObj = {};
var processedObj = stringObject.split("[Object { ");
processedObj = processedObj[1].split("},");
$.each(processedObj, function (i, v) {
jsObj[v.split("key=")[1].split(",")[0]] = v.split("value=")[1].split(",")[0].replace(/\"/g,'');
});
return jsObj
}
var t = interpolateStringObject(stringObject); //t is the object you want
我喜歡的功能性方法來實現這一任務:
var arr = [{ key:"11", value:"1100" }, { key:"22", value:"2200" }];
var result = arr.reduce(function(obj,item){
obj[item.key] = item.value;
return obj;
}, {});
注:最後{}
是初始值爲obj
的減值函數,如果您不會提供初始值的第一個arr
元素將被使用(這可能是不受歡迎的)。
,如果密鑰是動態的? –
那麼,你應該知道給定的項目/對象的哪個屬性應該用作關鍵字,哪個屬性值爲否?如果我們假設wfirst prop總是關鍵,第二個值我們可以使用像這樣的回調函數: function(obj,item){ \t \t var keys = item.keys(); obj [item [keys [0]]] = item [keys [0]]; return obj; } – GreQ
糾錯回調以上的: 代碼 VAR OBJ = arr.reduce(函數(OBJ,項目){ \t \t VAR鍵= Object.keys(項目); \t \t OBJ [項目[鍵[0]] ] = item [keys [1]]; return obj; },{}); – GreQ
var myArray = [
Object { key="11", value="1100", $$hashKey="00X"},
Object { key="22", value="2200", $$hashKey="018"}
];
var myObj = _.object(_.pluck(myArray, 'key'), _.pluck(myArray, 'value'));
使用lodash!
const obj = _.keyBy(arrayOfObjects, 'keyName')
微小ES6解決方案可以是這樣的:
var arr = [{key:"11", value:"1100"},{key:"22", value:"2200"}];
var object = arr.reduce(
(obj, item) => Object.assign(obj, {[item.key]: item.value}) ,{});
另外,如果您使用對象蔓延,比它可以看起來像:
var object = arr.reduce((obj, item) => ({...obj, {[item.key]: item.value}}) ,{});
還有一個解決方案,99%的速度(在jsperf上測試):
var object = arr.reduce((obj, item) => (obj[item.key] = item.value, obj) ,{});
在這裏,我們從逗號運算符中受益,它在逗號之前評估所有表達式並返回最後一個(在最後一個逗號之後)。所以我們不要每次複製obj
,而是給它分配新的屬性。
最簡單的答案,但也是最優雅的 –
var newObj = Object.assign({}, ...array)
完成!
「魔法」轉換爲Object.assign({},{key:'11',value:'1100'},{key:'22',value: '2200'})'導致對象:'{key:'22',value:'2200'}',而不是預期的結果。 – Tibos
要使用哪種語言進行轉換? – silicakes
@ Mike86我想使用JavaScript –
你接受上面的字符串嗎? – silicakes