Javascript 通过字典进行迭代,以避免Js不起作用
我的代码中有一个名为CarValues的字典,其中包含以下数据: 字典:CarValues 键==>字符串 值==>数组Javascript 通过字典进行迭代,以避免Js不起作用,javascript,reactjs,react-native,Javascript,Reactjs,React Native,我的代码中有一个名为CarValues的字典,其中包含以下数据: 字典:CarValues 键==>字符串 值==>数组 钥匙=>本田,价值=>白、黄、红、橙 键=>丰田,值=>白、黄、绿、黑 钥匙=>Volkswagen价值=>123456343 我希望遍历该键并生成一个字符串,如下所示: 变量合并=本田汽车白色和本田汽车黄色和本田汽车红色和本田汽车橙色和丰田汽车白色和丰田汽车绿色和丰田汽车黑色和大众汽车=123和大众汽车=456&Vo斯瓦根汽车=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 + "'");
}
**))**
但是上面的编译语句在突出显示的粗体行中出现了错误。您可以尝试这样的操作:(不要忘记添加
this.state.
)
const CarValues={
本田:[“白色”、“黄色”、“红色”、“橙色”],
丰田:[“白色”、“黄色”、“绿色”、“黑色”],
大众:[123456343]
}
var q=对象项(CarValues)
.map(([key,value])=>`${key}=`+value.join(`&${key}=`))
.加入(“&”);
console.log(q)
您可以尝试以下方法:(不要忘记添加此.state.
)
const CarValues={
本田:[“白色”、“黄色”、“红色”、“橙色”],
丰田:[“白色”、“黄色”、“绿色”、“黑色”],
大众:[123456343]
}
var q=对象项(CarValues)
.map(([key,value])=>`${key}=`+value.join(`&${key}=`))
.加入(“&”);
console.log(q)
假设您的数据结构如下:
const cars = {
Honda: ["white", "yellow", "red", "orange"],
Toyota: ["white", "green"],
Volkswagon: [123, 456]
};
您需要输出:
宏达卡尔='白色'&HondaCar='黄色'&HondaCar='红色'&HondaCar='橙色'ToyotaCar='白色'&ToyotaCar='绿色'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);
假设您的数据结构如下:
const cars = {
Honda: ["white", "yellow", "red", "orange"],
Toyota: ["white", "green"],
Volkswagon: [123, 456]
};
您需要输出:
宏达卡尔='白色'&HondaCar='黄色'&HondaCar='红色'&HondaCar='橙色'ToyotaCar='白色'&ToyotaCar='绿色'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);
数据中的value属性是包含逗号分隔项的数组或字符串?解决方案取决于数据类型。数据中的value属性是数组。让我补充一点。谢谢除了下面的解决方案之外,第二次尝试失败的原因是,当对主体使用箭头函数和
()
时,它需要一个表达式(如1+2
),而不是一个语句(如用于(…){}
)。如果你用花括号替换它们,它会工作的fine@kingdaro谢谢我不知道。数据中的value属性是包含逗号分隔项的数组或字符串?解决方案取决于数据类型。数据中的value属性是数组。让我补充一点。谢谢除了下面的解决方案之外,第二次尝试失败的原因是,当对主体使用箭头函数和()
时,它需要一个表达式(如1+2
),而不是一个语句(如用于(…){}
)。如果你用花括号替换它们,它会工作的fine@kingdaro谢谢我不知道,这很有效。我喜欢代码的编写方式。干净整洁。非常感谢@维姬,很乐意帮忙!还有一个问题,从上面的CarValues对象(例如Honda)中完全删除keyValue对的最佳方法是什么,以及从上面的代码中删除它的值(整个记录)。@Vicky,删除CarValues。Honda
效果很好。我喜欢代码的编写方式。干净整洁。非常感谢@维姬,很乐意帮忙!还有一个问题,从上面的CarValues对象(例如Honda)中完全删除keyValue对的最佳方法是什么,以及从上面的代码中删除其值(整个记录)。@Vicky,删除CarValues。Honda
我认为应该可以。但是,我没有试过,因为我用了下面的一个。非常感谢@nikrb,我觉得应该行。但是,我没有试过,因为我用了下面的一个。非常感谢@nikrb。