请教JS如何操作二维数组的增,删和改。

一个二维数组如下:

[["1575604671",""],["1575604672",""],["1575604673",""],["1575604674",""],["1575604675",""]]

请教各位如何在这个数组中增加和修改:

var num = 3;
var time1 = "1575604675";
var time2 = "1575604676";

想要实现的效果如下:

// 如果二维数组里面有 time1 值,也就是"1575604675",则把 num 添加到当前数组里面
[["1575604671",""],["1575604672",""],["1575604673",""],["1575604674",""],["1575604675","3"]]
// 如果二维数组里面没有 time2 值,也就是 "1575604676",则添加一组数组,同时删除最前面的一个数组(保持数组内的数组只有5组)
[["1575604672",""],["1575604673",""],["1575604674",""],["1575604675",""],["1575604676","3"]]

本是试用了findIndex()和indexOf(),貌似都不能很好解决!

阅读 4.1k
3 个回答
function funNameXXX(arr, time, num){
    let target = arr.find(item=>item[0] == time);
    if(target){
        target[1] = num;
    }else{
        arr[4] = [time,''];
    }
}
funNameXXX(arr, time1, num);
funNameXXX(arr, time2, num);
    var arr = [["1575604671",""],["1575604672",""],["1575604673",""],["1575604674",""],["1575604675","6"]];
    var num = 3;
    var time1 = "1575604675";
    var time2 = "1575604676";

    function func(arr, time, num){
        var tem = arr.find(item=>item[0] == time);
        console.log(tem)
        if(tem){
            //如果存在 这里你的添加如果是往后添加就用 push
            tem.push(num)
            //如果是第二个 "" 替换的话就用
            tem[1] = num
            console.log(arr)
        }else{
            
            arr.shift();
            arr.push(new Array(time))
            console.log(arr)
        }

    }
    func(arr,time1,num)
    func(arr,time2,num)

二维数组建议参考es6新数组结构Map参考地址

let map = new Map([["1575604671", ""], ["1575604672", ""], ["1575604673", ""], ["1575604674", ""], ["1575604675", ""]])

var num = 3
var time1 = '1575604675'
var time2 = '1575604676'

function map2Arr (map, time, num) {
    if (map.has(time)) {  // 如果map里面有这个属性,直接修改
        map.set(time, num)
    } else {  // map里面没有这个属性,先把map转成普通数组,利用数组变异方法处理元素
        map = [...map]
        map.shift()
        map.push([time, num])
    }

    return [...map]  // 统一返回数组
}
const result = map2Arr(map, time1, num)
for (let value of result) {
    console.log(value)
}
推荐问题