数组中的每一项都是一个数字:
var items = Array(523,3452,334,31, ...5346);
如何用新物品替换旧物品?
例如,我们想用1010替换3452,该怎么做呢?
数组中的每一项都是一个数字:
var items = Array(523,3452,334,31, ...5346);
如何用新物品替换旧物品?
例如,我们想用1010替换3452,该怎么做呢?
当前回答
var index = items.indexOf(3452);
if (index !== -1) {
items[index] = 1010;
}
另外,建议不要使用构造函数方法来初始化数组。相反,使用文字语法:
var items = [523, 3452, 334, 31, 5346];
如果你喜欢简洁的JavaScript,想缩短-1的比较,你也可以使用~操作符:
var index = items.indexOf(3452);
if (~index) {
items[index] = 1010;
}
有时我甚至喜欢写一个包含函数来抽象这个检查,使它更容易理解发生了什么。令人惊叹的是,这对数组和字符串都有效:
var contains = function (haystack, needle) {
return !!~haystack.indexOf(needle);
};
// can be used like so now:
if (contains(items, 3452)) {
// do something else...
}
从字符串的ES6/ES2015开始,到数组的ES2016建议,你可以更容易地确定一个源是否包含另一个值:
if (haystack.includes(needle)) {
// do your thing
}
其他回答
替换可以在一行中完成:
var items =数组(523,3452,334,331,5346); 项目(项目。Map ((e, i) => [i, e])。Filter (e => e[1] == 3452)[0][0]] = 1010 console.log(项目);
或者创建一个函数来重用:
Array.prototype.replace =函数(t, v) { 如果(this.indexOf (t) != 1) 这个(这个。Map ((e, i) => [i, e])。Filter (e => e[1] == t)[0][0]] = v; }; / /检查 var items =数组(523,3452,334,331,5346); 物品。替换(3452、1010); console.log(项目);
使用ES6扩展操作符和.slice方法替换列表中元素的不可变方法。
const arr = ['fir', 'next', 'third'], item = 'next'
const nextArr = [
...arr.slice(0, arr.indexOf(item)),
'second',
...arr.slice(arr.indexOf(item) + 1)
]
验证它是否有效
console.log(arr) // [ 'fir', 'next', 'third' ]
console.log(nextArr) // ['fir', 'second', 'third']
presentPrompt(id,productqty) {
let alert = this.forgotCtrl.create({
title: 'Test',
inputs: [
{
name: 'pickqty',
placeholder: 'pick quantity'
},
{
name: 'state',
value: 'verified',
disabled:true,
placeholder: 'state',
}
],
buttons: [
{
text: 'Ok',
role: 'cancel',
handler: data => {
console.log('dataaaaname',data.pickqty);
console.log('dataaaapwd',data.state);
for (var i = 0; i < this.cottonLists.length; i++){
if (this.cottonLists[i].id == id){
this.cottonLists[i].real_stock = data.pickqty;
}
}
for (var i = 0; i < this.cottonLists.length; i++){
if (this.cottonLists[i].id == id){
this.cottonLists[i].state = 'verified';
}
}
//Log object to console again.
console.log("After update: ", this.cottonLists)
console.log('Ok clicked');
}
},
]
});
alert.present();
}
As per your requirement you can change fields and array names.
thats all. Enjoy your coding.
ES6道:
const items = Array(523, 3452, 334, 31, ...5346);
我们想用1010替换3452,解决方案:
const newItems = items.map(item => item === 3452 ? 1010 : item);
当然,这个问题是很多年前的问题了,现在我更喜欢使用不可变的解决方案,当然,这对ReactJS来说是很棒的。
为了经常使用,我提供以下功能:
const itemReplacer = (array, oldItem, newItem) =>
array.map(item => item === oldItem ? newItem : item);
用for循环很容易完成。
for (var i = 0; i < items.length; i++)
if (items[i] == 3452)
items[i] = 1010;