Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将数组转换为json对象_Javascript_Json - Fatal编程技术网

Javascript 将数组转换为json对象

Javascript 将数组转换为json对象,javascript,json,Javascript,Json,我有一个这样的数组 [ 'quality', 'print-quality: 4', 'x-dimension', 'Value: 21590', 'Value: y-dimension', 'Value: 27940', 'Value: ', 'Value: media-bottom-margin', 'Value: 0', 'Value: media-left-margin', 'Value: 0', 'Value: media-right-mar

我有一个这样的数组

[ 'quality',
  'print-quality: 4',
  'x-dimension',
  'Value: 21590',
  'Value: y-dimension',
  'Value: 27940',
  'Value: ',
  'Value: media-bottom-margin',
  'Value: 0',
  'Value: media-left-margin',
  'Value: 0',
  'Value: media-right-margin',
  'Value: 0',
  'Value: media-top-margin',
  'Value: 0',
  'Value: ' ]
我正在尝试将此数组转换为以下格式的
json

 { "quality": "print-quality: 4",
  "x-dimension": "21590",
  "y-dimension": "27940", 
  "media-bottom-margin": "0",
  "media-left-margin" : "0",
 "media-right-margin": "0",
  "media-top-margin" : "0" 
 }

我需要删除所有的“Value”字符串,以及如何以上述格式获取它

您不能创建这样的关联数组,因为JavaScript没有关联数组。但是你可以创建一个对象,这正是你想要的

这里有一种方法:

var data = [ 'quality',
        'print-quality: 4',
        'x-dimension',
        'Value: 21590',
        'Value: y-dimension',
        'Value: 27940',
        'Value: ',
        'Value: media-bottom-margin',
        'Value: 0',
        'Value: media-left-margin',
        'Value: 0',
        'Value: media-right-margin',
        'Value: 0',
        'Value: media-top-margin',
        'Value: 0',
        'Value: ' ],
    cleanData,
    newData = {}; // initialize the new object

cleanData = data
    .map( function(x) { return x.replace(/^Value: /, ''); }) // remove leading "Value: " 
    .filter( function (x) { return !x.match(/^$/); } ); // strip empty values 

for (i = 0; i < cleanData.length; i += 2) { // loop over the cleaned-up array
    newData[cleanData[i]] = cleanData[i + 1];
}

您不能创建这样的关联数组,因为JavaScript没有关联数组。但是你可以创建一个对象,这正是你想要的

这里有一种方法:

var data = [ 'quality',
        'print-quality: 4',
        'x-dimension',
        'Value: 21590',
        'Value: y-dimension',
        'Value: 27940',
        'Value: ',
        'Value: media-bottom-margin',
        'Value: 0',
        'Value: media-left-margin',
        'Value: 0',
        'Value: media-right-margin',
        'Value: 0',
        'Value: media-top-margin',
        'Value: 0',
        'Value: ' ],
    cleanData,
    newData = {}; // initialize the new object

cleanData = data
    .map( function(x) { return x.replace(/^Value: /, ''); }) // remove leading "Value: " 
    .filter( function (x) { return !x.match(/^$/); } ); // strip empty values 

for (i = 0; i < cleanData.length; i += 2) { // loop over the cleaned-up array
    newData[cleanData[i]] = cleanData[i + 1];
}

你只是忽略了'Value:'elemets吗?没有输入完整的值..我需要像'0'这样的整数部分不需要字符串'Value:'那么这样做有什么问题?@SantiagoHernández也引用了你只是忽略了'Value:'elemets吗?没有输入完整的值..我需要像'0'这样的整数部分不需要字符串'Value:'那么“这么做有什么问题吗?”圣地亚哥·厄南德斯还引用了一句富有创造性的话,我喜欢,谁知道谁投了反对票,但这里是+1sir@Santiago埃尔南德斯:“很有创意”——你会怎么做呢?这是一个幼稚的实现。正如Ed Cottrell所说的“这里有一种方法”有很多方法可以使用本机javascript代码来实现,如果你问我使用regex;)的另一种方法,玩得开心@zerkms@SantiagoHernández和它基本上是一样的-你只需要使用
forEach
而不是
for
@zerkms好吧,那么你就是:
var json={};data.toString().replace(/Value:/gi,“”).replace(/,$/,”).split(“,”).forEach(函数(el,i,a){if(i%2==0)json[el]=a[i+1];})这样就可以了。我没有使用
map
filter
:)晚安,这很有创意,我喜欢,谁知道谁投了反对票,但这里是+1sir@Santiago埃尔南德斯:“很有创意”——你会怎么做呢?这是一个幼稚的实现。正如Ed Cottrell所说的“这里有一种方法”有很多方法可以使用本机javascript代码来实现,如果你问我使用regex;)的另一种方法,玩得开心@zerkms@SantiagoHernández和它基本上是一样的-你只需要使用
forEach
而不是
for
@zerkms好吧,那么你就是:
var json={};data.toString().replace(/Value:/gi,“”).replace(/,$/,”).split(“,”).forEach(函数(el,i,a){if(i%2==0)json[el]=a[i+1];})这样就可以了。我没有使用
map
filter
:)晚安