繁体   English   中英

如何将数组值推入不同的数组?

[英]How to Push array values to diffrent arrays?

我有一个包含键和值的数组,我想将哪些元素推入2个不同的数组(键成一个数组,值成另一个数组)

这是我使用的代码:

// the array i want to split
var defaultc = {
    'a':'r019',
    'b':'r027',
    'c':'r027',
    'd':'r027',
    'e':'r047'
};
// the array i want to add to
var step_layer = []; // keys to this
var step_colour = {}; // values to this


$('#reset').click(function() {
    $.each(defaultc, function(layer, colour) {

        // both these functions are working properly
        apply_changes(layer, colour);
        sumary(layer, colour);
    });

    // this part is not
    for (var layer in defaultc) {
        if (!defaultc.hasOwnProperty(layer)) {
        step_layer.push(layer);
        step_colour[layer].push(colour);
    }}
    return false;
});
var defaultc = {
    'a':'r019',
    'b':'r027',
    'c':'r027',
    'd':'r027',
    'e':'r047'
};

var step_layer = []; // keys to this
var step_colour = []; // values to this

for(var key in defaultc) {
   setip_layer.push(key);
   step_colour.push(defaultc[key]);
}

您有一个对象,而不是数组。 它很简单:

var step_layer = Object.keys(defaultc); // array of property names
var step_colour = Object.values(defaultc); // arrray of property values

但是由于.values是非标准方法, .keys仅在现代浏览器中可用,并且对象属性的迭代顺序不固定,因此应在对象上使用单个循环:

var step_layer = []; // array of property names
var step_colour = []; // arrray of property values
for (var layer in defaultc) {
    step_layer.push(layer);
    step_colour.push(defaultc[layer]);
}

这就是您的代码不同的地方。 首先,从var step_colour = {}; 再次是一个对象,将其用于键值映射。 因此,甚至可以使用step_colour[layer]访问其属性,但这仍然是undefined 您似乎假设它是一个数组,在其上使用.push会引发错误(请查看调试控制台)。 我不确定您要达到的目标。 创建一个数组,克隆defaultc变量?

另一个问题是if (!defaultc.hasOwnProperty(layer)) 首先,您的defaultc是一个普通对象,并且不会继承任何可枚举的属性,因此只需保留该条件即可。 其次,由于循环的所有layer 都是 defaultc自身属性,因此该块将永远不会执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM