首页 > 解决方案 > 将字符串转换为键值对数组

问题描述

我正在阅读复选框名称和值。如果部分被执行,则有两个复选框,如果单个复选框,则 else 块将被执行。

if (Array.isArray(b.name)) {
  b.options = b.name.map(function(v, i) {
    return [v, b.value[i]];
  });
} else {
  b.options = b.name.map(function(v, i) {
    return [v, b.value[i]];
  });
}

例如: 在此处输入图像描述

在上面的代码中,如果块只有在有多个值时才会被执行,并且它工作正常,因为我们有一个数组。

name = Spinevalue = Spine Value 在以下情况下:

在此处输入图像描述

这里的 else 部分将从上面的代码片段中执行。但是这里它返回一个错误,说b.name.map is not a function.

如何将此字符串转换为类似于 if 块的数组。

到目前为止,在 else 块中尝试过:

b.options = $.each(function(v, i) {
  return [b.name, b.value];
});


$.each({name: b.name, value: b.value}, function(k, v) {
  b.options = (k + "" + v);
});

标签: javascriptjquery

解决方案


如果 b.name 有长度属性,你可以使用 'call'

if(Array.isArray(b.name)){
   b.options = Array.prototype.map.call(b.name,function(v,i) { 
            return [v, b.value[i]]; 
   })
}else{
   b.options = Array.prototype.map.call(b.name,function(v,i) { 
            return [v, b.value[i]]; 
   })
}

推荐阅读