Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 具有给定键数组中的键/值对的对象数组&;价值观_Javascript_Arrays - Fatal编程技术网

Javascript 具有给定键数组中的键/值对的对象数组&;价值观

Javascript 具有给定键数组中的键/值对的对象数组&;价值观,javascript,arrays,Javascript,Arrays,我试图从给定的键数组中返回一个键值对数组:[{“a”:1},{“b”:2},{“c”:3}],[“a”,“b”,“c”]和一个值数组:[1,2,3] 我试过这个: let arr = [], obj = {}, key, val; const keyValuePairs = (k, v) => { if (k.length === v.length) { for (var i = 0; i < k.length; i++) { key = k[i]; val

我试图从给定的键数组中返回一个键值对数组:
[{“a”:1},{“b”:2},{“c”:3}]
[“a”,“b”,“c”]
和一个值数组:
[1,2,3]

我试过这个:

let arr = [], obj = {}, key, val;
const keyValuePairs = (k, v) => {
  if (k.length === v.length) {
    for (var i = 0; i < k.length; i++) {
      key = k[i]; val = v[i];
      arr[i] = {key: val};
    }
  } return arr;
};

keyValuePairs(["a", "b", "c"], [1, 2, 3]);
让arr=[],obj={},key,val;
常量keyValuePairs=(k,v)=>{
如果(k.length==v.length){
对于(变量i=0;i
但是它返回-
[{key:1},{key:2},{key:3}]


我该怎么做呢?

如果您的目标是一款足够新的浏览器,或者正在使用babel,那么有一种新的语法可以轻松做到这一点:

arr[i]={[key]:val}

否则,您将需要使用多行来设置密钥

let arr = [], obj = {}, key, val;
const keyValuePairs = (k, v) => {
  if (k.length === v.length) {
    for (var i = 0; i < k.length; i++) {
      key = k[i]; val = v[i];
      var newObj = {};
      newObj[key] = val;
      arr[i] = newObj;
    }
  } return arr;
};
a=[“a”,“b”,“c”],b=[1,2,3]
c=a.map((k,i)=>({[k]:b[i]}))
console.log(JSON.stringify(c))
试试这个(简单的解决方案):

var-answer=keyValuePairs([“a”、“b”、“c”],[1,2,3]);
控制台日志(应答);
函数keyValuePairs(arrOne、arrTwo){
var returnArr=[];
对于(变量i=0;i
使用,您可以使用
.map
或香草
数组.prototype.map
在一行中执行此操作,并使用索引
i
在数组中添加条带

var keys = 'abc'.split('');
var values = '123'.split('');
var result = _.map(keys, (key, i) =>  ( { [keys[i]] : values[i] } ) );
console.log(JSON.stringify(result));
收益率:
[{“a”:“1”},{“b”:“2”},{“c”:“3”}]

您还可以在尺寸上继续此模式:

var keys = 'abc'.split('');
var values = '123'.split('');
var valuesValues = 'xyz'.split('');
var result = _.map(keys, (key, i) => ( { [keys[i]] : { [ values[i] ]: valuesValues[i] } } ) );
console.log(JSON.stringify(result));
收益率:

您也可以根据需要使用reduce方法

请参见下面的示例

let key=[“a”、“b”、“c”],
值=[1,2,3],
result=keys.reduce((r,v,i)=>r.concat({[v]:value[i]}),[]);

控制台。日志(结果)尝试更改
arr[i]={key:val}
to
arr[i]={[key]:val}@Hasan-非常感谢。如果你要讨论这个新的语法,为什么不给出它的名字,甚至一个引用?是的,它非常冗长<代码>[key]
是这里的关键。谢谢。
var keys = 'abc'.split('');
var values = '123'.split('');
var valuesValues = 'xyz'.split('');
var result = _.map(keys, (key, i) => ( { [keys[i]] : { [ values[i] ]: valuesValues[i] } } ) );
console.log(JSON.stringify(result));