我有一个这样的数组:
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/