[英]Array of Arrays to Dictonary JavaScript
我有一个数组数组,并希望像这样返回一个字典。
function retFunc(array) {
var dict ={};
for(var i=0; i<=array.length-1;i++){
dict={[array[i][0]] : array[i][1]}
}
return dict
}
retFunc([['a','b'],'['c','d']])
output
{ c : 'd'}
return dict 只返回最后一个键/值对。 我想返回所有键/值对,但做类似 dict += {[array[i][0]] : array[i][1]} 的事情是行不通的。
你在做
dict={[array[i][0]] : array[i][1]}
这意味着您将一个新对象分配给变量 dict。 不追加! 如果你想附加到你的 dict 对象。 写这个:
dict[array[i][0]] = array[i][1];
使用Object.assign
、 .map()
、 传播语法和参数解构非常简单:
function retFunc(arr) { return Object.assign({}, ...arr.map(([k, v]) => ({[k]: v}))); } console.log(retFunc([['a','b'],['c','d']]));
你必须做
function retFunc(array) { var dict ={}; for(var i=0; i<=array.length-1;i++){ dict[array[i][0]] = array[i][1]; } return dict } console.log(retFunc([['a','b'],['c','d']]))
而是使用dict[array[i][0]] = array[i][1];
映射所有键值。
function retFunc(array) { var dict ={}; for(var i=0; i<=array.length-1;i++){ dict[array[i][0]] = array[i][1]; } return dict } var x = retFunc([['a','b'],['c','d']]); console.log(x);
使用赋值作为dict[array[i][0]] = array[i][1]
添加一个key:value
对到你的 dict 对象
也从数组中删除错字。
function retFunc(array) { var dict = {}; for (var i = 0; i <= array.length - 1; i++) { dict[array[i][0]] = array[i][1] } return dict } console.log(retFunc([ ['a', 'b'], ['c', 'd'] ]))
尝试使用object
键 = 值赋值,
function retFunc(array) { var dict = {}; for (var i = 0; i <= array.length - 1; i++) { dict[array[i][0]] = array[i][1]; } return dict; } console.log(retFunc([ ['a', 'b'], ['c', 'd'] ]));
您可以使用对所需键的直接分配。
dict[array[i][0]] = array[i][1];
function retFunc(array) { var dict = {}; for (var i = 0; i <= array.length - 1; i++) { dict[array[i][0]] = array[i][1]; } return dict; } console.log(retFunc([['a', 'b'], ['c', 'd']]));
更实用的方法可能包括
Object.assign
用于收集对象的一部分,
展开语法...
用于将数组作为参数
Array#map
用于获取新数组,
具有对象值而不是使用数组的解构赋值,以及
计算属性名称以使用变量作为键。
function retFunc(array) { return Object.assign(...array.map(([k, v]) => ({ [k]: v }))); } console.log(retFunc([['a', 'b'], ['c', 'd']]));
这是Array.reduce
函数的完美候选。 下面是一个带注释的示例,显示了Array.reduce
如何为您的示例工作。 您还可以在MDN 上找到文档
const input = [ ['a', 'b'], ['d', 'd'], ['e', 'f'], ]; // adds key/value from `arr` to dict. function arrayToDict(dict, arr){ dict = dict || {}; // take an array of two items and turn it into a key value pair. let [key, value] = arr; // if you don't like es6 syntax, then this is equivalent /* var key = arr[0]; var value = arr[1]; */ dict[key] = value; return dict; } // this function can be used to add any one of our pairs to a dictionary console.log('Example1: ', arrayToDict({}, ['a', 'b'])); // now we can use the Array Reduce function to add each pair to the dictionary. let output = input.reduce(arrayToDict, {}); console.log('Output:', output);
Object.fromEntries() 方法将键值对列表转换为对象。 链接
Object.fromEntries(iterable);
var array = [
['a','b'],
['c','d']
];
var dict = Object.fromEntries(array);
console.log(dict);
// {a: "b", c: "d"}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.