JavaScript数组删除数组中的开始引号和结束引号

JavaScript数组删除数组中的开始引号和结束引号,javascript,arrays,Javascript,Arrays,我试图构建一个数组,在数组中显示值、颜色、高光和标签 硬代码数组如下所示: var数据=[ { 价值:300, 颜色:#F7464A“, 亮点:“FF5A5E”, 标签:“红色” }, { 价值:50, 颜色:“46BFBD”, 亮点:“5AD3D1”, 标签:“绿色” }, { 数值:100, 颜色:“FDB45C”, 亮点:“FFC870”, 标签:“黄色” } ]; 这是我的密码: var pieData = []; var label = []; var beginData = &qu

我试图构建一个数组,在数组中显示值、颜色、高光和标签

硬代码数组如下所示:

var数据=[
{
价值:300,
颜色:#F7464A“,
亮点:“FF5A5E”,
标签:“红色”
},
{
价值:50,
颜色:“46BFBD”,
亮点:“5AD3D1”,
标签:“绿色”
},
{
数值:100,
颜色:“FDB45C”,
亮点:“FFC870”,
标签:“黄色”
}
];
这是我的密码:

var pieData = [];
var label = [];
var beginData = "{";
var endData = "}";
var firstItem = "value:";
var secondItem = "color:";
var thirdItem = "highlight:";
var fourItem = "label:";
var spaceItem = ",";
var beginQuote = '"';
var endQuote =  '"';
var checkCounter = x.childElementCount -1;
var arrayColor = ["#F7464A", "#46BFBD", "#FDB45C", "#466abf", "#dc46f7", "#46bf8b", "#afbf46", "#bf8b46", "#bf5c46", "#b7bf46", "#46a9bf", "#bf4846" ];
var array = [     '#FF5A5E', '#5AD3D1', '#FFC870', '#466abf', '#dc46f7', '#46bf8b', '#afbf46', '#bf8b46', '#bf5c46', '#b7bf46', "#46a9bf", "#bf4846" ];
for( i = 0; i < x.childElementCount; i++) {
    name = x.childNodes[i].attributes.name.value;
    value = x.childNodes[i].attributes.value.value;
    array[i];
    arrayColor[i];
    if (checkCounter != i){
       pieData.push(beginData + firstItem + beginQuote + value + endQuote + spaceItem + secondItem + beginQuote + array[i] + endQuote + spaceItem + thirdItem + beginQuote + arrayColor[i]+ endQuote + spaceItem + fourItem + beginQuote + name + endQuote +  endData + spaceItem);
    }
     else{
        pieData.push(beginData + firstItem + beginQuote + value + endQuote + spaceItem + secondItem + beginQuote + array[i] + endQuote + spaceItem + thirdItem + beginQuote + arrayColor[i]+ endQuote + spaceItem + fourItem + beginQuote + name + endQuote +  endData);

                            }
  label.push(name);

您的代码正在构建字符串,而不是对象。应该使用对象文字语法在循环中构建对象。假设
x.childNodes
类似于数组,则可以使用以下代码:

var arrayColor = ["#F7464A", "#46BFBD", "#FDB45C", "#466abf", "#dc46f7", "#46bf8b", "#afbf46", "#bf8b46", "#bf5c46", "#b7bf46", "#46a9bf", "#bf4846" ];
var array = [     '#FF5A5E', '#5AD3D1', '#FFC870', '#466abf', '#dc46f7', '#46bf8b', '#afbf46', '#bf8b46', '#bf5c46', '#b7bf46', "#46a9bf", "#bf4846" ];

var pieData = Array.from(x.childNodes, ({attributes:{value, name}}, i) => ({
    value: value.value,
    color: arrayColor[i % arrayColor.length],
    highlight: array[i % array.length],
    label: name.value,
}));

console.log(pieData);
%
用于避免超出颜色数组的范围,以防数组中的
childNodes
条目比数组中的条目多


Array.from
是将类似数组的对象(如
childNodes
)映射到具有派生数据的数组的理想选择,这正是您正在执行的操作。

是否要创建对象数组或字符串数组?使用
JSON.parse
将字符串转换为对象。代码中有未定义的变量(什么是
x
及其属性…?)。此外,您的代码中的行不起任何作用,例如
array[i];
。你打算在那里做什么?看起来你在代码中引用了一些HTML?HTML是什么?它在你的问题中扮演什么角色?谢谢你的帮助。我需要将饼图的颜色移到属性上。我正在使它变得比需要的更难。我不明白你对图表和属性的看法.从你的问题中,我了解到你心里有一个特定的输出,一个包含对象的数组。我相信我的答案会生成包含对象的数组。它不会回答你的问题吗?是的,你回答了我的问题。我现在在控制台中看到。log FYI array.From在IE中不起作用。IE中有很多不起作用。
var arrayColor = ["#F7464A", "#46BFBD", "#FDB45C", "#466abf", "#dc46f7", "#46bf8b", "#afbf46", "#bf8b46", "#bf5c46", "#b7bf46", "#46a9bf", "#bf4846" ];
var array = [     '#FF5A5E', '#5AD3D1', '#FFC870', '#466abf', '#dc46f7', '#46bf8b', '#afbf46', '#bf8b46', '#bf5c46', '#b7bf46', "#46a9bf", "#bf4846" ];

var pieData = Array.from(x.childNodes, ({attributes:{value, name}}, i) => ({
    value: value.value,
    color: arrayColor[i % arrayColor.length],
    highlight: array[i % array.length],
    label: name.value,
}));

console.log(pieData);