将Javascript数组转换为JSON用户定义的键/值对
我需要从文本输入中获取一个字符串,并将其从数组转换为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
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&&i console.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-代码>。我不确定你说的括号是什么意思。实际上,我后来在代码中对对象进行了字符串化,所以这就是问题所在。谢谢你的帮助!