我需要从文本输入中获取一个字符串,并将其从数组转换为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每个循环。谁能阐明一些想法?
答案 0 :(得分:2)
这不是创建对象的理想方法,但是您可以跳过键,使用当前索引(i
使用键/值创建对象,然后将其推入结果({{ 1}}):
orderInputObjects
答案 1 :(得分:2)
您可以使用简单的for循环并以2而不是1递增
const orderInputArray = ["key1", "value1", "key2", "value2"];
const orderInputObjects = [];
orderInputArray.forEach(function(v, i, a) {
if(i % 2) orderInputObjects.push({ [a[i - 1]]: v });
});
console.log(orderInputObjects);
答案 2 :(得分:1)
forEach
使用回调函数,因此不能保证在代码中的let 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
}
答案 3 :(得分:1)
您可以使用filter
创建一个奇数和偶数数组,然后使用reduce函数创建一个对象数组
let orderInputArray = ["key1", "value1", "key2", "value2"];
let vals = orderInputArray.filter(function(item, index) {
return index % 2 === 1
});
let keys = orderInputArray.filter(function(item, index) {
return index % 2 === 0
}).reduce(function(acc, curr, index) {
acc.push({
[curr]: vals[index]
})
return acc
}, []);
console.log(keys)
答案 4 :(得分:1)
您也可以通过reduce进行此操作
let orderInputArray = ["key1", "value1", "key2", "value2"];
var l = orderInputArray.length;
var jsobj = orderInputArray.reduce(function(acc, v, i) {
var o = {};
if (i % 2 === 0 && i < l - 1) {
o[v] = orderInputArray[i + 1];
acc.push(o)
}
return acc;
}, []);
console.log(JSON.stringify(jsobj))
答案 5 :(得分:1)
这是我的解决方案:
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)
答案 6 :(得分:1)
let orderInputArray = ["key1", "value1", "key2", "value2"];
jsonArray = [];
orderInputArray.forEach((item, i, a)=> {if(i%2 === 0) jsonArray.push({item:a[i+1]})});
console.log(jsonArray)