Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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数组转换为JSON用户定义的键/值对_Javascript_Arrays_Json - Fatal编程技术网

将Javascript数组转换为JSON用户定义的键/值对

将Javascript数组转换为JSON用户定义的键/值对,javascript,arrays,json,Javascript,Arrays,Json,我需要从文本输入中获取一个字符串,并将其从数组转换为JSON对象 let orderInputArray = ["key1", "value1", "key2", "value2"]; let json = {} let key,value; orderInputArray.forEach(function(keyValue) { json[key] = keyValue.value; }); let orderInputJSON = JSON.stringify(orderInputA

我需要从文本输入中获取一个字符串,并将其从数组转换为JSON对象

let orderInputArray = ["key1", "value1", "key2", "value2"];
let json = {}
let key,value;

orderInputArray.forEach(function(keyValue) {
  json[key] = keyValue.value;
});

let orderInputJSON = JSON.stringify(orderInputArray);
我需要它看起来像:

[{"key1": "value1"}, {"key2": "value2"}]

我不太确定如何使用for-each循环来实现这一点。有人能解释一下吗?

这不是创建对象的理想方式,但您可以跳过键,使用当前索引(
i
)创建具有键/值的对象,并将其推送到结果(
orderInputObjects
):

常量orderInputArray=[“key1”、“value1”、“key2”、“value2”]; 常量orderInputObjects=[]; forEach(函数(v,i,a){ if(i%2)orderInputObjects.push({[a[i-1]]:v}); });
log(orderInputObjects)您可以使用一个简单的for循环,并按2而不是1递增

function arrayToKeyValue(array) {
  let updated = [];
  for (let i = 0; i < array.length; i += 2) {
    const key = array[i];
    const value = array[i + 1];
    updated.push({ key: value });
  }
  return updated;
}
函数arrayToKeyValue(数组){
让更新=[];
for(设i=0;i
forEach
使用回调函数,因此不能保证在
让orderInputJSON=JSON.stringify(orderInputArray)之前完成在您的代码中

试用

var i;

for (i =0; i < orderInputArray.length; i=i+2){
//create object here using orderInputArray[i] as key and orderInputArray[i+1] as value
}
vari;
对于(i=0;i
您可以使用
过滤器创建奇偶数组,然后使用reduce函数创建对象数组

让orderInputArray=[“key1”、“value1”、“key2”、“value2”];
设VAL=orderInputArray.filter(函数(项,索引){
返回索引%2==1
});
let keys=orderInputArray.filter(函数(项,索引){
返回索引%2==0
}).减少(功能(acc、curr、索引){
加速推({
[当前]:VAL[索引]
})
返回acc
}, []);
console.log(键)
您也可以使用

让orderInputArray=[“key1”、“value1”、“key2”、“value2”];
var l=orderInputArray.length;
var jsobj=orderInputArray.reduce(函数(acc,v,i){
var o={};
如果(i%2==0&&iconsole.log(JSON.stringify(jsobj))
这里是我的拼接解决方案:

var fruits = ["Banana", "Orange", "Apple", "Mango"];

var json = {};
while(fruits.length > 0){
    let a = fruits.splice(0,2)
    console.log(a)
    json[a[0]] = a[1]
}

console.log(json)
让orderInputArray=[“key1”、“value1”、“key2”、“value2”];
jsonArray=[];
forEach((item,i,a)=>{if(i%2==0)jsonArray.push({item:a[i+1]})});

console.log(jsonArray)
为什么不使用每次迭代增量为2的for循环?查找array.splicate是否有任何原因您必须特别使用
forEach
循环与常规for循环相比?@mr.void在这种情况下,splice有什么帮助?@WookieCoder我认为它比旧式for loop更方便谢谢,问题在我这边。这非常有效。快速问题:如果我想使用{“key1”:“value1”,“key2”:“value2”,“key3”:“value3”},那么我将如何修改代码?我还注意到数组括号周围有“”,如何删除这些括号?如果(I%2)obj[a[I-1]=v,那么应该给您一个object-
。我不确定你说的括号是什么意思。实际上,我后来在代码中对对象进行了字符串化,所以这就是问题所在。谢谢你的帮助!