将一个数组的每个国家映射到另一个数组的每种颜色
Javascript: mapping each country of an array to each color of another array
我有两个数组,基本上是国家和颜色,我想绑定这两个数组的每一项。我尝试了一个函数,但不工作…
function mapColor(){
var countries = ["UK", "INDIA", "FRANCE", "CHINA"];
var colors = ["#807dba", "#41ab5d", "#DECF3F", "#FAA43A"];
var obj ={};
for(i=0, j=0; i<countries.length; i++, j<colors.length, j++){
obj[countries[i]] = colors[j];
}
return obj;
};
和期望对象应该是。
{"UK":"#807dba","INDIA":"#41ab5d","FRANCE":"#DECF3F","CHINA":"#FAA43A"}
你把它弄得太复杂了。
for (i=0; i<countries.length; i++){
obj[countries[i]] = colors[i];
}
或
countries.forEach( function (val, ind){ obj[val] = colors(ind); });
您可以这样使用reduce
:
function mapColor(){
var countries = ["UK", "INDIA", "FRANCE", "CHINA"],
colors = ["#807dba", "#41ab5d", "#DECF3F", "#FAA43A"];
return countries.reduce(function(obj, country, index){
obj[country] = colors[index];
return obj;
}, {});
};
reduce()
方法对累加器和每个累加器应用函数数组的值(从左到右)必须将其减少为单个价值。
既然在同一个函数中定义了数组,为什么不这样做呢:
function mapColor() {
var obj = {};
obj['UK'] = '#807dba';
...
return obj;
}
或者如果数组要传入,则:
假设数组总是相同的长度:
function mapColor(countries, colors) {
var obj = {};
if (countries.length != colors.length) {
alert('Countries and Colors array should be of the same length');
return null;
}
for (var i = 0; i < countries.length; i++) {
obj[countries[i]] = colors[i];
}
return obj;
}
如果不能保证它们的长度相同:
function mapColor(countries, colors) {
var minLength = Math.min(countries.length, colors.length),
obj = {};
for (var i = 0; i < minLength; i++) {
obj[countries[i]] = colors[i];
}
return obj;
}
var countries = ["UK", "INDIA", "FRANCE", "CHINA"];
var colors = ["#807dba", "#41ab5d", "#DECF3F", "#FAA43A"];
var result = [];
$.each(countries, function(index, value){
result[value] = colors[index];
});
console.info(result);
// Result : [UK: "#807dba", INDIA: "#41ab5d", FRANCE: "#DECF3F", CHINA: "#FAA43A"]
相关文章:
- JavaScript数组包含一个值
- 使用事件更改数组的一个元素
- 从 javascript 数组创建一个 Jquery 数组
- 使用javascript匹配字符串中数组的一个元素
- Angular2从数组创建一个列表
- 在Javascript数组或一个对象中存储多个数据所需的Tweak
- 你能给被劫持的JavaScript数组添加一个函数吗
- 从带有循环的数组中一个接一个地在画布上绘制形状
- 将图像数组从一个窗口传递到另一个窗口,并在javascript的新窗口中显示图像
- 使用拆分字符串的数组创建一个对象
- 多维数组 - 创建一个表
- 将数组从一个函数传递到另一个函数
- 如何将复选框值的数组从一个JSP页面传递到另一个页面
- 使用Knockout.Js将数组绑定到表,并将数组的一个项绑定到另一个元素
- 需要访问数组从一个js到另一个
- 我如何发送数据像数组从一个html文件到另一个html页面
- 从另一个对象和要保存的键数组生成一个对象的最简洁的方法
- 用另一个js数组填充一个javascript数组
- 将对象数组从一个函数传递到另一个函数
- 根据另一个值数组过滤一个对象数组,返回一个空列表