Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.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 从包含日期值的现有数组创建新数组_Javascript - Fatal编程技术网

Javascript 从包含日期值的现有数组创建新数组

Javascript 从包含日期值的现有数组创建新数组,javascript,Javascript,我有一个数组,其中的值附加了日期 -x[0].value = 5, x[0].time = "Mon 24 April 2012" -x[1].value = 12, x[1].time = "Mon 24 April 2012" -x[2].value = 11, x[2].time = "Mon 23 April 2012" -x[3].value = 2, x[3].time = "Mon 20 April 2012" -x[4].value = 11, x[4].

我有一个数组,其中的值附加了日期

-x[0].value = 5,    x[0].time = "Mon 24 April 2012"
-x[1].value = 12,   x[1].time = "Mon 24 April 2012"
-x[2].value = 11,   x[2].time = "Mon 23 April 2012"
-x[3].value = 2,    x[3].time = "Mon 20 April 2012"
-x[4].value = 11,   x[4].time = "Mon 20 April 2012"
-x[5].value = 7,    x[5].time = "Mon 20 April 2012"
-x[6].value = 7,    x[6].time = "Mon 20 April 2012"
如何根据此数组的相似日期创建多个数组。我希望一天结束

data1阵列将包含:

-x[0].value = 5,    x[0].time = "Mon 24 April 2012"
-x[1].value = 12,   x[1].time = "Mon 24 April 2012"
-x[2].value = 11,   x[2].time = "Mon 23 April 2012"
-x[3].value = 2,    x[3].time = "Mon 20 April 2012"
-x[4].value = 11,   x[4].time = "Mon 20 April 2012"
-x[5].value = 7,    x[5].time = "Mon 20 April 2012"
-x[6].value = 7,    x[6].time = "Mon 20 April 2012"
data2阵列将包含:

-x[0].value = 5,    x[0].time = "Mon 24 April 2012"
-x[1].value = 12,   x[1].time = "Mon 24 April 2012"
-x[2].value = 11,   x[2].time = "Mon 23 April 2012"
-x[3].value = 2,    x[3].time = "Mon 20 April 2012"
-x[4].value = 11,   x[4].time = "Mon 20 April 2012"
-x[5].value = 7,    x[5].time = "Mon 20 April 2012"
-x[6].value = 7,    x[6].time = "Mon 20 April 2012"
data3阵列将包含:

-x[0].value = 5,    x[0].time = "Mon 24 April 2012"
-x[1].value = 12,   x[1].time = "Mon 24 April 2012"
-x[2].value = 11,   x[2].time = "Mon 23 April 2012"
-x[3].value = 2,    x[3].time = "Mon 20 April 2012"
-x[4].value = 11,   x[4].time = "Mon 20 April 2012"
-x[5].value = 7,    x[5].time = "Mon 20 April 2012"
-x[6].value = 7,    x[6].time = "Mon 20 April 2012"

非常感谢您的帮助。

如果我理解正确,我可能会循环维护一个由
时间
值键入的临时映射,并在最后排序:

var index;
var data;
var rentry;
var entry;
var map;

data = [];
map = {};
for (index = 0; index < x.length; ++index) { // Or forEach on ES5 systems
    entry = x[index];
    rentry = map[entry.time];
    if (!rentry) {
        rentry = map[entry.time] = [];
        data.push(rentry);
        rentry.time = entry.time;
    }
    rentry.push(entry);
}
map = undefined;
data.sort(function(a, b) {
    if (a.time < b.time) {
        return -1;
    }
    if (a.time > b.time) {
       return 1;
    }
    return 0;
});
var指数;
var数据;
var租金;
风险价值分录;
var映射;
数据=[];
map={};
对于(index=0;indexb.时间){
返回1;
}
返回0;
});

现在
data[0]
有一组条目,它们的
time
值最低,
data[1]
次高的
time
值等等。

如果我理解正确,我可能会循环维护一个由
time
值键入的临时映射,并在末尾排序:

var index;
var data;
var rentry;
var entry;
var map;

data = [];
map = {};
for (index = 0; index < x.length; ++index) { // Or forEach on ES5 systems
    entry = x[index];
    rentry = map[entry.time];
    if (!rentry) {
        rentry = map[entry.time] = [];
        data.push(rentry);
        rentry.time = entry.time;
    }
    rentry.push(entry);
}
map = undefined;
data.sort(function(a, b) {
    if (a.time < b.time) {
        return -1;
    }
    if (a.time > b.time) {
       return 1;
    }
    return 0;
});
var指数;
var数据;
var租金;
风险价值分录;
var映射;
数据=[];
map={};
对于(index=0;indexb.时间){
返回1;
}
返回0;
});

现在,
data[0]
有一个具有最低
time
值的条目数组,
data[1]
次高
time
值,等等。

从您的问题中不清楚您正试图实现什么样的结果,但这里有一个函数可以为您提供一个数组,每个时间值对应一个数组:

var map = {}, i, time, temp, results;
for (i = 0; i < x.length; i++) {
    time = x[i].time;
    if (time in map) {
        // add this item to the array we already have for this time
        map[time].push(x[i]);
    } else {
        // create a new array for this time and put it in the map
        temp = [];
        temp.push(x[i]);
        map[time] = temp;
        results.push(temp);
    }
}

// here the variable results is an array of arrays, one for each time value
var-map={},i,时间,温度,结果;
对于(i=0;i
从您的问题中不清楚您正试图实现什么样的结果,但这里有一个函数,它将为您提供一个数组,每个时间值一个数组:

var map = {}, i, time, temp, results;
for (i = 0; i < x.length; i++) {
    time = x[i].time;
    if (time in map) {
        // add this item to the array we already have for this time
        map[time].push(x[i]);
    } else {
        // create a new array for this time and put it in the map
        temp = [];
        temp.push(x[i]);
        map[time] = temp;
        results.push(temp);
    }
}

// here the variable results is an array of arrays, one for each time value
var-map={},i,时间,温度,结果;
对于(i=0;i
这种方法怎么样:

var arrs = {};
for (var i = 0; i < data.length; i++) {
    if (!arrs[data[i].time]) arrs[data[i].time] = [];
    arrs[data[i].time].push(data[i])
}
它将创建下一个结构的对象(而不是数组):

arrs = {
    "Mon 24 April 2012": [
        {"value": 5, "time": "Mon 24 April 2012"},
        {"value": 12, "time": "Mon 24 April 2012"}
    ],
    "Mon 23 April 2012": [
        {"value": 11, "time": "Mon 23 April 2012"}
    ],
    "Mon 20 April 2012": [
        {"value": 2, "time": "Mon 20 April 2012"},
        {"value": 11, "time": "Mon 20 April 2012"},
        {"value": 7, "time": "Mon 20 April 2012"},
        {"value": 7, "time": "Mon 20 April 2012"}
    ]
}​

这种方法怎么样:

var arrs = {};
for (var i = 0; i < data.length; i++) {
    if (!arrs[data[i].time]) arrs[data[i].time] = [];
    arrs[data[i].time].push(data[i])
}
它将创建下一个结构的对象(而不是数组):

arrs = {
    "Mon 24 April 2012": [
        {"value": 5, "time": "Mon 24 April 2012"},
        {"value": 12, "time": "Mon 24 April 2012"}
    ],
    "Mon 23 April 2012": [
        {"value": 11, "time": "Mon 23 April 2012"}
    ],
    "Mon 20 April 2012": [
        {"value": 2, "time": "Mon 20 April 2012"},
        {"value": 11, "time": "Mon 20 April 2012"},
        {"value": 7, "time": "Mon 20 April 2012"},
        {"value": 7, "time": "Mon 20 April 2012"}
    ]
}​

这将为您提供一个数组

var dataGroups = data.sort(function(a, b) {
    return a.time.localeCompare(b.time);
}).reduce(function(result, obj) {
    if (result.length && obj.time === result[0][0].time)
        result[0].push(obj);
    else
        result.unshift([obj]);
    return result;
}, []);
我假设您实际上不希望每个数组都有单独的递增标识符,因为这通常不是很有用

结果是:

[
    [
        {
            "value": 5,
            "time": "Mon 24 April 2012"
        },
        {
            "value": 12,
            "time": "Mon 24 April 2012"
        }
    ],
    [
        {
            "value": 11,
            "time": "Mon 23 April 2012"
        }
    ],
    [
        {
            "value": 2,
            "time": "Mon 20 April 2012"
        },
        {
            "value": 11,
            "time": "Mon 20 April 2012"
        },
        {
            "value": 7,
            "time": "Mon 20 April 2012"
        },
        {
            "value": 7,
            "time": "Mon 20 April 2012"
        }
    ]
]

这将为您提供一个数组

var dataGroups = data.sort(function(a, b) {
    return a.time.localeCompare(b.time);
}).reduce(function(result, obj) {
    if (result.length && obj.time === result[0][0].time)
        result[0].push(obj);
    else
        result.unshift([obj]);
    return result;
}, []);
我假设您实际上不希望每个数组都有单独的递增标识符,因为这通常不是很有用

结果是:

[
    [
        {
            "value": 5,
            "time": "Mon 24 April 2012"
        },
        {
            "value": 12,
            "time": "Mon 24 April 2012"
        }
    ],
    [
        {
            "value": 11,
            "time": "Mon 23 April 2012"
        }
    ],
    [
        {
            "value": 2,
            "time": "Mon 20 April 2012"
        },
        {
            "value": 11,
            "time": "Mon 20 April 2012"
        },
        {
            "value": 7,
            "time": "Mon 20 April 2012"
        },
        {
            "value": 7,
            "time": "Mon 20 April 2012"
        }
    ]
]


-符号是什么?x总是正确排序吗?这没有任何意义。你说的是
data1
array和
data2
array,但它们都在同一个
x
array中?Alex,不,数据不能总是正确排序。但是,在这种情况下,日期已经排序,因此它们保持不变。但是一切都是固定的,谢谢。符号是什么?x总是正确排序吗?这没有任何意义。你说的是
data1
array和
data2
array,但它们都在同一个
x
array中?Alex,不,数据不能总是正确排序。但是,在这种情况下,日期已经排序,因此它们保持不变。但一切都已解决,谢谢。很抱歉反应太晚。但谢谢你们,这一切都很顺利。正是我想要的。@user1469174:好交易,很高兴能帮上忙!很抱歉反应太晚。但谢谢你们,这一切都很顺利。正是我想要的。@user1469174:好交易,很高兴能帮上忙!工作得很好。起初我没有得到任何值,但现在已修复。谢谢你,太好了。起初我没有得到任何值,但现在已修复。谢谢你的及时帮助。它帮了我很大的忙,因为我想创建类似这样的东西,以便轻松调用图表。感谢您的即时帮助。它帮了我很大的忙,因为我想创建类似这样的东西,方便调用图表。我真的不在乎日期。我希望这些值只是按日期排序,这样我就可以使用它们了。谢谢,这很有帮助。我想我应该说,修改了我的代码,这很有魅力。谢谢。我真的不在乎日期。我希望这些值只是按日期排序,这样我就可以使用它们了。谢谢,这很有帮助。我想我应该说,修改了我的代码,这就像一个魅力,谢谢。