javascript - 如何在嵌套数组上使用 includes() 函数?

标签 javascript jquery arrays

我有一个这样的数组:

var arr = [];
arr = [['red', 685], ['green', 210], ['blue', 65]];

我还有两个变量:

var color  = 'blue';
var number = 21;

我要做的就是检查 arr 的每个嵌套数组的第一项,然后更新它的第二项或为其创建一个新数组。

这里是一些例子:

输入:

var color  = 'blue';
var number = 21;

预期输出:

arr = [['red', 685], ['green', 210], ['blue', 21]];

输入:

var color  = 'yellow';
var number = 245;

预期输出:

arr = [['red', 685], ['green', 210], ['blue', 21], ['yellow', 245]];

到目前为止,这是我尝试过的:

if ( !arr.includes(color) ) {
    arr.push([color, number]);
} else {
    arr[color] = time;
}

但是 !arr.includes(color) 条件是错误的。因为 arr 的每一项也是一个数组。无论如何,如何在嵌套数组的第一项上使用 includes() 函数?

最佳答案

您不能直接在嵌套数组上使用includes,但是,您可以使用find。在阵列上。

arr.find(el => el[0] === color)

这将返回在其他情况下找到的数组元素 undefined。返回值可用于更新数组中的第二个元素。

var arr = [
  ['red', 685],
  ['green', 210],
  ['blue', 65]
];
var color = 'blue';
var number = 21;


function upsert(array, color, number) {
  var exists = arr.find(el => el[0] === color);

  if (exists) {
    exists[1] = number;
  } else {
    arr.push([color, number]);
  }
}

upsert(arr, color, number);
console.log(arr);


var color = 'yellow';
var number = 245;
upsert(arr, color, number);
console.log(arr);

关于javascript - 如何在嵌套数组上使用 includes() 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43512034/

相关文章:

javascript - 异步加载谷歌地图时快速失败

javascript - Jquery 垂直制表符未知间隙和对齐方式

javascript - 使用用户输入的信息更新表格,表格是否按字母顺序显示数组值?

python - 在由重复项组成的无序数组中查找唯一元素

javascript - 将对象连接到数组中

javascript - Ajax 总是在成功时刷新页面

javascript - 在 JavaScript 中使用正则表达式时,我可以保持 WebMatrix 智能感知的理智吗?

javascript - 如何将选项卡设置为禁用/启用

javascript - 带有 select2 的语义 ui

java - 创建具有特定大小和特定值的字节数组