我有一个包含对象和数组的嵌套数据结构.如何提取信息,即访问特定或多个值(或键)?
例如:
var data = {
code: 42,
items: [{
id: 1,
name: 'foo'
}, {
id: 2,
name: 'bar'
}]
};
Run Code Online (Sandbox Code Playgroud)
我怎么能访问name第二项items?
我需要有关非贪婪选项的正则表达式匹配的帮助.
匹配模式是:
<img\s.*>
Run Code Online (Sandbox Code Playgroud)
要匹配的文字是:
<html>
<img src="test">
abc
<img
src="a" src='a' a=b>
</html>
Run Code Online (Sandbox Code Playgroud)
此表达式匹配从<img最后到的所有文本>.我需要它与>初始后遇到的第一个匹配<img,所以在这里我需要得到两个匹配而不是我得到的匹配.
我尝试了所有非贪婪的?组合,没有成功.
我有一个字符串说: My Name is %NAME% and my age is %AGE%.
%XXX%是占位符.我们需要从对象替换值.
对象看起来像: {"%NAME%":"Mike","%AGE%":"26","%EVENT%":"20"}
我需要解析对象并用相应的值替换字符串.所以最终输出将是:
我的名字是迈克,我的年龄是26岁.
整个过程必须使用纯javascript或jquery完成.
我正在使用新的ES6模板文字功能,我头脑中的第一件事是String.format用于Javascript,所以我开始实现原型:
String.prototype.format = function() {
var self = this;
arguments.forEach(function(val,idx) {
self["p"+idx] = val;
});
return this.toString();
};
console.log(`Hello, ${p0}. This is a ${p1}`.format("world", "test"));
Run Code Online (Sandbox Code Playgroud)
但是,模板文字在传递给我的原型方法之前会被评估.有没有什么办法可以编写上面的代码来推迟结果,直到我动态创建元素?
所以我有这个string:
var name = "Chaim";
var templateStr = "Hello, my name is ${name}";
Run Code Online (Sandbox Code Playgroud)
如何将其转换为模板字符串,以便结果等于:
var template = `Hello, my name is ${name}`;
Run Code Online (Sandbox Code Playgroud)
有没有办法以编程方式构建模板文字?
我想使用静态定义的模板进行URL构建.
我正在尝试使用ES6字符串插值功能
var template = "http://example.com/?name=${name}&age=${age}";
var name = "John";
var age = "30";
var url = `${template}`;
Run Code Online (Sandbox Code Playgroud)
预期结果:http://example.com/?name = John" = 23
实际结果:http://example.com/? name = $ {name}&age = $ {age}
在这种情况下,不能用绳子插做的是有没有更好的方法比String.prototype.replace像
var url = template.replace(/\${name}/,"John").replace(/\${age}/, 23);
Run Code Online (Sandbox Code Playgroud) 我遇到了ES6中的字符串插值功能。如果我在代码中定义了原始字符串,它将起作用。但是我想从文件中读取原始字符串,然后替换占位符。怎么做?
file.txt
hello ${customer.name}
Run Code Online (Sandbox Code Playgroud)
节点JS
var customer = {name: 'sid'};
var data = fs.readFileSync("file.txt","utf8");
// what should go here so that data is 'Hello sid'?
Run Code Online (Sandbox Code Playgroud) 我开始使用模板文字来制作错误生成器.
我有工作代码,但我被迫在constructor范围内声明可能的错误列表,我对此并不满意.
有没有办法复制模板文字而不评估它,所以我可以在正确的范围内评估它?或者将范围传递给模板文字?
工作error.js:
'use strict';
class Error {
constructor(code) {
const error = {
//...
//API
1001: 'No token',
1002: `${arguments[1]}`,
1003: `${arguments[1]} ! ${arguments[2]}`,
1004: 'Missing data'
//...
};
let i = 0;
this.code = code;
this.error = error[code];
//...
}
}
// export default Error;
module.exports = Error;
Run Code Online (Sandbox Code Playgroud)
被称为:
'use strict';
const Error = require('./error.js');
console.log(new Error(1002, 'var'));
Run Code Online (Sandbox Code Playgroud)
我想要的是能够const error在模块范围内声明,或者更好的是,在它自己的文件中声明我require.但是现在这样做导致argument不是那个constructor,而是模块之一.
I'm trying to re-use a template literal in javascript.
This isn't working:
let int;
let temp= `Number is: ${int}`;
console.log(temp)
// Number is: undefined
int = 1;
console.log(temp)
// Number is: undefined
int = 2;
console.log(temp)
// Number is: undefined
Run Code Online (Sandbox Code Playgroud)
I thought that changing int variable will dynamicaly change in the template. but i learned otherwise :D
Is it even possible and if so what is the right way of doing it?
Thanks.
我有一个字符串,其中包含单词,后跟冒号。我需要用对象中的值替换该字符串中的冒号。我能够提取出冒号单词,但不确定在字符串中替换它的最佳方法。
这就是我所拥有的:
const string = 'This is :state :buttonName by :name';
const buttonName = 'button link';
const data = {
state: 'Alabama',
name: 'Arun'
}
const res = string.match(/:[a-zA-Z]+/g).map(i => i.replace(':', ''))
console.log(res)
// This is Alabama button link by ArunRun Code Online (Sandbox Code Playgroud)
最终结果应该是
This is Alabama button link by Arun
Run Code Online (Sandbox Code Playgroud)
请指教。
javascript ×9
ecmascript-6 ×5
node.js ×2
regex ×2
string ×2
arrays ×1
jquery ×1
nested ×1
non-greedy ×1
object ×1
regex-greedy ×1