我的代码中有一个名为CarValues的字典,其中包含以下数据:
字典:CarValues
key ==>串
值==>阵列
我想遍历密钥并生成如下字符串:
var merge = Honda Car ='white'& Honda Car ='yellow'& Honda Car ='red'& ;本田的车 = '桔子' &安培;丰田的车 = '白色' &安培;丰田的车 = '黄色' 和;丰田的车 = '绿色' 和;丰田的车 = '黑' &安培;大众的车 = 123&安培;大众的车 = 456&安培;大众的车 = 343
我在类中的一个方法中有类似下面的内容:
var merge = '';
Object.getOwnPropertyNames(this.state.CarValues).map(function(key){
for (var x in key.values) {
merge= merge.concat('&' + key + '='" + x + "'");
}
我不确定出了什么问题,但上述情况并不奏效。它表示在执行时键未定义。
下面还试过,
Object.keys(this.state.CarValues).map((key) => (
**for (var value in vals[key] }) {**
merge = merge.concat('&' + key + '='" + x + "'");
}
**))**
但是上面的编译错误表明Expression在粗体突出显示的行中是预期的。
答案 0 :(得分:2)
您可以尝试这样的事情:(不要忘记添加this.state.
)
const CarValues = {
Honda: ['white', 'yellow', 'red', 'orange'],
Toyota: ['white', 'yellow', 'green', 'black'],
Volkswagen: [123, 456, 343]
}
var q = Object.entries(CarValues)
.map( ([key, value]) => `${key}=` + value.join(`&${key}=`))
.join('&');
console.log(q)

答案 1 :(得分:0)
假设您的数据结构如下:
const cars = {
Honda: ["white", "yellow", "red", "orange"],
Toyota: ["white", "green"],
Volkswagon: [123, 456]
};
你想要输出: HondaCar = '白色' &安培; HondaCar = '黄色' 和; HondaCar = '红' 和; HondaCar = 'orange'ToyotaCar =' 白色 '&安培; ToyotaCar =' green'VolkswagonCar = '123' 和; VolkswagonCar = '456'
这个怎么样:
const { cars } = this.state;
const keys = Object.keys(cars);
const s = keys.reduce((acc, car) => {
const colours = cars[car].map(val => {
return `${car}Car='${val}'`;
});
return `${acc}${colours.join('&')}`;
}, "");
console.log(s);